4

Мне нужно раздуть пользовательское меню в фрагменте.Значок меню не отображается в панели действий

У меня есть только один пункт меню. Но значок не отображается.

Может кто-нибудь сказать, что случилось с моим кодом

Мой menu.xml

<menu 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" > 

<item 
    android:id="@+id/search" 
    android:icon="@android:drawable/ic_search_category_default" 
    app:showAsAction="always" 
    android:title="Search"/></menu> 

И я поставил в onCreateView()

setHasOptionsMenu(true); 
    getActivity().invalidateOptionsMenu(); 

И надувать меню

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    // TODO Auto-generated method stub 

    inflater = getActivity().getMenuInflater(); 

    inflater.inflate(R.menu.menu, menu); 

} 

R экран esulting, приведенный ниже. Мне нужно иметь значок поиска вместо значка переполнения меню.

enter image description here

+1

Попробуйте 'приложение: showAsAction = "всегда" 'в ваше меню Пункт – Panther

+0

Спасибо Пантера, даже я добавляю« приложение: showAsAction = »всегда», он не показывает значок, см. мой отредактированный вопрос –

+0

вы можете попробовать изменить свой значок.? – Riser

ответ

1

Вы должны добавить следующее свойство app:showAsAction="ifRoom"

+0

Спасибо hoomi, даже я добавлю «app: showAsAction =» always », он не показывает значок, см. Мой отредактированный вопрос –

+1

попробуйте удалить' getActivity() .invalidateOptionsMenu(); ' – hoomi

+0

Да .. Я пробовал, но он не работает :( –

2

Я думаю, что вы должны использовать

<menu 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" > 

<item 
android:id="@+id/search" 
android:icon="@drawable/ic_search_category_default" 
app:showAsAction="always" 
android:title="Search"/></menu> 

и

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.mymenu, menu); 
    return true; 
} 
+0

Спасибо @Pamitha, я попробовал ... Он не работает :( –

0

сделать меню на код ниже ...

и установить его в качестве меню ..

+0

что-то помещал в строки вашего желания. и дайте ссылку здесь в заголовке. и выберите значок. Вставьте его в чертежи и укажите ссылку в значке. – Sangeeta

0

Это поведение по умолчанию в меню переполнением от ActionBar. Если вы хотите, чтобы показать значки в меню переполнения, переопределить onMenuOpened метода в вашей деятельности с этим кодом Snippit:

@Override 
public boolean onMenuOpened(int featureId, Menu menu) { 
    if(featureId == Window.FEATURE_ACTION_BAR && menu != null){ 
     if(menu.getClass().getSimpleName().equals("MenuBuilder")){ 
      try{ 
       Method m = menu.getClass().getDeclaredMethod(
         "setOptionalIconsVisible", Boolean.TYPE); 
       m.setAccessible(true); 
       m.invoke(menu, true); 
      } 
      catch(NoSuchMethodException e){ 
       Log.e("MyActivity", "onMenuOpened", e); 
      } 
      catch(Exception e){ 
       throw new RuntimeException(e); 
      } 
     } 
    } 
    return super.onMenuOpened(featureId, menu); 
} 
8

Я знаю, я немного опоздали на вечеринку, но надеется, что сможет помочь кому-то остальное. Сегодня я столкнулся с этой ТАКОЙ проблемой.

Я исправляюсь андроид: showAsAction = "всегда" вместо приложения: showAsAction = "всегда"

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item android:id="@+id/bluetooth_status_off" 
    android:orderInCategory="0" 
    android:icon="@drawable/bluetooth_red" 
    android:title="@string/app_name" 
    android:showAsAction="always" /> 
</menu> 

на showAsAction подчеркнут красным (предупреждение), но работает отлично.

+0

Спасибо рафа. –

0

Если вы используете свой код на Android 3.0+, значки в меню не отображаются по дизайну. Это дизайнерское решение от Google. You can read more about this on Android developers blog.

+0

Ссылки могут стать устаревшими, не могли бы вы подвести некоторые ключевые моменты или (уместно) привести соответствующие части блога? – MSeifert

0

К сожалению до конца, но поставить этот код в OnCreate()

toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
0
  1. Скопируйте код меню XML.
  2. Удалить файл меню
  3. Теперь создайте новый файл меню в res-> Каталог меню
  4. и назовите его с другим именем
  5. Теперь Run
Смежные вопросы