Android: затемнение кнопок навигации

Пытаюсь затемнить кнопки навигации (Назад, Домой и т. Д.) На Honeycomb +. Похоже, это должно помочь, но у меня это не работает:

protected void onResume( )
{
    super.onResume();

    View v = findViewById( android.R.id.content );
    if ( v != null )
        v.setSystemUiVisibility( isNightVision() ? View.SYSTEM_UI_FLAG_LOW_PROFILE
                                                  :View.SYSTEM_UI_FLAG_VISIBLE );
}

У меня есть некоторые доказательства того, что я делаю это правильно, потому что, если я использую SYSTEM_UI_FLAG_HIDE_NAVIGATION, а не SYSTEM_UI_FLAG_LOW_PROFILE, панель навигации скрывается.

Я тестирую Nexus 7 и сначала подумал, что, возможно, это устройство просто не поддерживает эту опцию. Однако в приложении Kindle кнопки затемнены до точек, поэтому я предполагаю, что это возможно. Есть предположения?


person btschumy    schedule 07.11.2012    source источник


Ответы (2)


Вот что я делаю в одном из своих приложений:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
person EGHDK    schedule 07.11.2012
comment
Да, я тоже пробовал, и это тоже не работает. Я предполагаю, что это должно иметь какое-то отношение к настройке приложения или, возможно, к настройке моего устройства. Но хоть убей, я понятия не имею, что это могло быть. - person btschumy; 08.11.2012
comment
Хорошо, я только что попробовал это с помощью простого тестового приложения, и оно там работает. Теперь попытаемся понять, почему это не работает в реальном приложении. - person btschumy; 08.11.2012
comment
Я заметил интересное поведение. Иногда это работает, используя приведенную выше строку кода, иногда нет. Что мне помогло, так это запланировать таймер в onCreate с задержкой 100 мс, который выполняет эту конкретную строку кода (API 16 на Samsung Galaxy Tab 2 10.1). - person Jane; 25.04.2013

Хорошо, я думаю, что понял это. Наше приложение несколько сложно, поскольку в нем есть библиотека Java (где я пытаюсь затемнить кнопки), собственная библиотека C и несколько приложений оболочки, которые используют библиотеки.

Похоже, мне нужно было разместить:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="11" />

В манифесте библиотеки, а также в манифесте оболочки.

Мне также нужно было установить целевой SDK на 11 в свойствах библиотеки и оболочек.

Думаю, раньше я делал это только в библиотеке, но наличие этого в оболочках было необходимо, чтобы эта функция действительно работала.

person btschumy    schedule 08.11.2012