Я использую следующее меню XML в своем проекте:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/user_cp"
android:icon="@drawable/gear"
android:showAsAction="always"
android:title="@string/usercp"
/>
<item
android:id="@+id/pm"
android:icon="@drawable/sym_action_email"
android:showAsAction="always"
android:title="@string/private_message"
/>
<item
android:id="@+id/refresh"
android:icon="@drawable/ic_menu_refresh"
android:title="@string/refresh"
/>
<item
android:id="@+id/settings"
android:icon="@drawable/ic_menu_preferences"
android:title="@string/settings"
/>
<item
android:id="@+id/logout"
android:icon="@drawable/ic_menu_logout"
android:title="@string/logout"
/>
</menu>
Когда мое приложение загружается на Google TV (эмулятор или реальное устройство) LeftNavBarLibrary (http://code.google.com/p/googletv-android-samples/source/browse/LeftNavBarLibrary) игнорирует андроид: showAsAction= "всегда" свойство установлено для первых двух пунктов меню. Эти элементы всегда помещаются в мягкое меню. Глядя в LeftNavBarLibrary, в OptionsDisplay.java я вижу эту ссылку на параметры меню "Показать всегда" и ничего больше:
private void refreshExpandedState() {
// Menu icon.
setOptionExpanded(mView.getChildAt(1), mExpanded);
// "Show always" options.
ViewGroup optionsContainer = getOptionsContainer();
for (int i = 0; i < optionsContainer.getChildCount(); ++i) {
setOptionExpanded(optionsContainer.getChildAt(i), mExpanded);
}
}
Работает ли эта функция с LeftNavBarLibrary или я застрял, реализуя ее самостоятельно? Для этого приложения очень важно, чтобы в некоторых случаях я использовал элементы действий на панели действий, поскольку кнопки являются реальными действиями, а не тем, что можно заменить навкладка.
Редактировать: Похоже, что LeftNavBarLibrary на самом деле не соблюдает меню параметров, он будет отображать кнопку параметров независимо от того, нужно ли это.