Кнопки действий не отображаются на панели действий?
Я следую инструкциям на http://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
"s 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);
}
Я хочу узнать, что вызывает эту проблему.
2 ответа
Это связано с тем, что если вы используете библиотеку 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>
Несмотря на то, что проблема решена, позвольте мне опубликовать ответ с более подробной информацией, которая может оказаться полезной любому позже.
Теперь проблема в том, что вы использовали android:showAsAction="ifRoom"
а также android:showAsAction="never"
вместо этого, если вы хотите, чтобы кнопка действия всегда была видна, используйте android:showAsAction="always"
К вашему сведению, Android:showAsAction может принимать любое из следующих значений:
android:showAsAction = ["ifRoom" | "Никогда" | "withText" | "всегда" | "CollapseActionView"]
Вы можете прочитать больше о Ресурсе Меню