2013-12-11 4 views
16

Я следую учебнику по developer.android.com и пытается добавить элементы в панель действий.Кнопки действий не отображаются на панели действий?

Хотя я добавил весь код, действие поиска отображается как элемент переполнения вместо элемента кнопки действия. Я пробовал на 4 "и 7" виртуальных устройствах с опцией мягкой клавиатуры.

Здесь

main_activity_actions.xml 
<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<!-- Search, should appear as action button --> 
<item android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    android:title="@string/action_search" 
    android:showAsAction="ifRoom" /> 
<!-- Settings, should always be in the overflow --> 
<item android:id="@+id/action_settings" 
    android:title="@string/action_settings" 
    android:showAsAction="never" /> 
</menu> 

Здесь onCreateOptionsMenu метод MainActivity.java «ы.

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_activity_actions, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

enter image description here

Я хочу, чтобы узнать, что вызывает эту проблему.

+0

Не могли бы вы предоставить снимок с переливом видимого экрана? –

+3

Это не похоже на дубликат этого вопроса ... – adamdport

ответ

48

Это связано с тем, что если вы используете библиотеку поддержки AppCompat ActionBar и ActionBarActivity, вы должны создать свои меню в отличие от стандартного способа создания xml-меню в ActioBarSherlock или по умолчанию ActionBar.

Так попробуйте этот код:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
     <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      app:showAsAction="always" /> 
     <item android:id="@+id/action_compose" 
      android:icon="@drawable/ic_action_compose" 
      android:title="@string/action_compose" 
      app:showAsAction="always"/> 
</menu> 
+4

Для кого-то другого с этой же проблемой важны пространства имен xmlns в верхней части определения xml. – MarcF

+0

@MarcF - почему они важны ?? – Anjum

+0

@Anjum - Как в этом не было бы для меня без этих заявлений. Возможно, очевидно для кого-то другого, но в то время это было не для меня. – MarcF

8

Хотя этот вопрос будет решен, позвольте мне опубликовать ответ с более подробной информацией, может быть признано полезным никем позже.

Теперь вопрос вы использовали android:showAsAction="ifRoom" и android:showAsAction="never", вместо этого, если вы хотите, чтобы кнопка действия всегда видимы затем использовать android:showAsAction="always"

FYI, андроид: showAsAction может принимать одно из любых значений:

android: showAsAction = ["ifRoom" | «никогда» | "withText" | «всегда» | "collapseActionView"]

enter image description here

Вы можете прочитать больше о Menu Resource

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