Кнопки действий не отображаются в панели действий?
Я следую руководству 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>
Вот метод MainActivity.java
onCreateOptionsMenu
.
@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]()
Я хочу узнать, что вызывает эту проблему.
Ответы
Ответ 1
Это связано с тем, что если вы используете библиотеку поддержки 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>
Ответ 2
Несмотря на то, что проблема решена, позвольте мне опубликовать ответ с дополнительной информацией, может быть найдена кем-либо позже.
Теперь проблема заключается в том, что вы использовали android:showAsAction="ifRoom"
и android:showAsAction="never"
, вместо этого, если вы хотите, чтобы кнопка действия всегда была видимой, используйте android:showAsAction="always"
FYI, android: showAsAction может принимать любые значения:
android: showAsAction = [ "ifRoom" | "никогда" | "withText" | "всегда" | "CollapseActionView" ]
![enter image description here]()
Подробнее о Ресурс меню