LeftNavBar не поддерживает Android: showAsAction = "всегда" - PullRequest
3 голосов
/ 19 января 2012

Я использую следующее меню 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 на самом деле не соблюдает меню параметров, он будет отображать кнопку параметров независимо от того, нужно ли это.

1 Ответ

2 голосов
/ 21 января 2012

Вы не сможете размещать элементы действий на LeftNavBar, он всегда будет отображаться как обычный пункт меню Option.

...