Android 4.0: настройка SYSTEM_UI_FLAG_LOW_PROFILE & SYSTEM_UI_FLAG_HIDE_NAVIGATION из действия вместо просмотра - PullRequest
2 голосов
/ 10 февраля 2012

Я играю с управлением кнопками пользовательского интерфейса в ICS.

Текущий механизм подавления кнопок Nav - это вызов setSystemUiVisibility из View с использованием флагов SYSTEM_UI_FLAG_HIDE_NAVIGATION или SYSTEM_UI_FLAG_LOW_PROFILE. Это кажется странным местом для установки этих флагов, так как большинство других связанных настроек (например, скрытие строки состояния) были выполнены через свойства окна LayoutParams.

У меня вопрос: есть ли у кого-нибудь из вас идеи о том, как сделать это из контекста действия? В настоящее время мое приложение предназначено для запуска с базовым классом активности, который содержит любую функциональность, которая мне нужна во всем приложении. Конкретные действия затем выводятся из этого базового класса. Я хотел бы иметь возможность устанавливать флаги навигации пользовательского интерфейса из этой базовой активности, чтобы мне не приходилось делать это в нескольких местах по всему исходному коду ... но моя базовая активность не содержит объектов View.

В качестве вторичного утверждения я действительно хотел бы иметь возможность полностью удалить кнопки NAV (например, с помощью SYSTEM_UI_FLAG_HIDE_NAVIGATION) и не дать им вернуться к пользовательскому вводу (давая моему приложению полный контроль над пользовательским интерфейсом). Я знаю, что это не то, что должно делать любое приложение с рынка ... но я не занимаюсь разработкой того, что будет доступно через рынок. Мой текущий план включает в себя пользовательскую сборку ОС, которая позволит мне выполнить это, но было бы неплохо, если бы был какой-то метод устранения этих программных кнопок в это время.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Вот что я написал для создания своей деятельности:

View main_layout = dialog.findViewById(android.R.id.content).getRootView();
main_layout.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

Это почти похоже на вызов из контекста активности. По крайней мере, это не зависит от определения представления во время компиляции. Я знаю, что STATUS_BAR_HIDDEN устарела, но я не могу заставить SYSTEM_UI_FLAG_LOW_PROFILE скомпилировать в данный момент ...

Но +1 на "это кажется странным местом для этих настроек". Должно быть что-то, что вы можете определить в манифесте один раз для всего приложения.

4 голосов
/ 25 июня 2012

Вы не можете полностью удалить кнопки навигации ICS.

Вы можете полностью скрыть их, но они появятся, как только вы коснетесь экрана:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

К сожалению,некоторые слои пользовательского интерфейса ICS, такие как TouchWiz от Samsung, не распознают SYSTEM_UI_FLAG_HIDE_NAVIGATION.

Кроме того, вы можете свернуть их, и они будут отображаться только при нажатии на полосу:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

Возможно, вынеобходимо создать собственное ПЗУ, чтобы полностью их устранить.

...