2016-08-16 1 views
0

Weird UI DisplayКак я могу переопределить панель меню, чтобы войти в панель приложений?

У меня есть recycler view + viewpager + панель инструментов в моей деятельности. Когда я долгое время нажимаю на строку в представлении recycler, она должна показывать мне панель меню с опцией удаления. Но это то, что я получаю. Любые идеи относительно того, почему это выходит за мое имя приложения?

Это XML моей основной деятельности:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.kaad.sampleproject.MainActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/main_activity_tool_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/main_activity_tablayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/main_activity_tool_bar" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     app:tabIndicatorColor="#ff00ff" 
     app:tabMode="fixed" 
     app:tabSelectedTextColor="#ffffff" 
     app:tabTextColor="#d3d3d3" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/main_activity_viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/main_activity_tablayout" /> 

</RelativeLayout> 

Я держал надстройку и о меню, которое никогда не будет отображаться для какой-либо причины: Вот XML-обоего моего меню:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/menu_bar_main" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    tools:context=".MainActivity"> 
    <item 
     android:id="@+id/menu_item_new" 
     android:icon="@drawable/ic_add_white_36dp" 
     android:title="@string/menu_new" 
     app:showAsAction="ifRoom|withText" /> 
    <item 
     android:id="@+id/menu_item_about" 
     android:title="@string/menu_about" 
     app:showAsAction="never" /> 
</menu> 

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/menu_bar_delete" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    tools:context=".MainActivity"> 
    <item android:id="@+id/menu_item_delete" 
     android:icon="@android:drawable/ic_menu_delete" 
     android:title="@string/delete" /> 
</menu> 

XML-моих стилей

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

     <!--<item name="colorPrimary">#FF595951</item>--> 
     <!--<item name="colorPrimaryDark">#FF5C5C5C</item>--> 
     <!--<item name="colorAccent">#FFCCCCCC</item>--> 
     <!--<item name="android:textColorPrimary">#FF0FF0</item>--> 
     <item name="windowActionBar">true</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

Это Основная деятельность:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my_main); 

     database = new Database(this); 
     categories = database.getCategories(); 

     myToolbar = (Toolbar) findViewById(R.id.main_activity_tool_bar); 
     setSupportActionBar(myToolbar); 


     // Get the ViewPager and set it's PagerAdapter so that it can display items 
     myViewPager = (ViewPager) findViewById(R.id.main_activity_viewpager); 
     myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), MyMainActivity.this, categories); 
     myViewPager.setAdapter(myPagerAdapter); 

     // Give the TabLayout the ViewPager 
     myTabLayout = (TabLayout) findViewById(R.id.main_activity_tablayout); 
     myTabLayout.setupWithViewPager(myViewPager); 

     // Iterate over all tabs and set the custom view 
     for (int i = 0; i < myTabLayout.getTabCount(); i++) { 
      TabLayout.Tab myTab = myTabLayout.getTabAt(i); 
      myTab.setCustomView(myPagerAdapter.getTabView(i)); 
     } 
     bus.getInstance().register(this); 
    } 

Это, как я зову свою строку меню в моем основном фрагменте рецепта

public class CustomMultiSelectorCallback extends ModalMultiSelectorCallback { 

     private int count; 
     public CustomMultiSelectorCallback(MultiSelector multiSelector) { 
      super(multiSelector); 
     } 

     @Override 
     public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { 
      super.onCreateActionMode(actionMode, menu); 
      count = 0; 
      actionMode.getMenuInflater().inflate(R.menu.list_item_delete, menu); 
      return true; 
     } 

ответ

0

Издания для О кнопке:

<item 
    android:id="@+id/menu_item_about" 
    android:title="@string/menu_about" 
    app:showAsAction="never" /> 

обновить никогда не раздел «ifRoom»

Что касается меню, которое вы видите, можете ли вы быть более явным, поскольку мне кажется, что в Relative Layout вы хотели, чтобы панель инструментов была сверху, а виды появились после нее, и это то, что это показывает.

+0

Я хочу, чтобы меню перекрывало панель приложений. И не приходите на это. –

+0

Если вы не ошибаетесь, то, что вы думаете о меню, это ваша панель приложений. «Пример категории» - это имя вашего макета таблицы. Это макет Layer Layout/Coordinator Layout, где после нажатия кнопки <- открывается список действий. Дайте мне знать, если я ошибаюсь. – sumandas

+0

Да. Но разве не «Простая категория» определяется как имя приложения является файлом манифеста? –

0

Так что я решил одну из проблем. Это то, что я редактировал в своем коде, чтобы отображать кнопки добавления и кнопки на панели инструментов.

Во-первых, в вашем OnCreate в фрагментах, добавьте следующую строку:

setHasOptionsMenu(true);

Во-вторых, в своих стилях, изменить тему на что-то, который имеет NoActionBar. В моем случае я сделал это:

<style name="AppThemeOfStyles"parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">#FF595951</item> 
     <item name="colorPrimaryDark">#FF5C5C5C</item> 
     <item name="colorAccent">#FFCCCCCC</item> 
     <item name="android:textColorPrimary">#FF0FF0</item> 
     <item name="windowActionBar">true</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

Я также изменил название моей темы от AppTheme до AppTheme стилей, поскольку AppTheme это уже тема определена. Так что лучше изменить название своей темы на что-то еще.

Это приводит нас к следующему результату: enter image description here

Но мое удаление все еще идет на верхней панель инструментов на longpress.

enter image description here Любые предложения, советы будут оценены :)

ОБНОВЛЕНО: Используйте это в вашей теме для наложения на работу: <item name="windowActionModeOverlay">true</item>

Вот конечный результат: enter image description here

Смежные вопросы