Скрыть кнопки переключения задач ICS назад домой - PullRequest
28 голосов
/ 12 декабря 2011

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

Кажется, я не могу найти его ни в Интернете, ни в документации Google.

Ответы [ 6 ]

31 голосов
/ 03 января 2012

pinxue точечно ... вы хотите SYSTEM_UI_FLAG_HIDE_NAVIGATION .Пример:

myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Следует отметить, что при любом (и я имею в виду ЛЮБОЕ) пользовательском взаимодействии панель навигации будет отображаться заново.

С Honeycomb вы можете получить ближайшийдолжен перейти в режим «выключения света» (теперь называется «низкий профиль» ... SYSTEM_UI_FLAG_LOW_PROFILE ).Это просто делает элементы на панели навигации менее заметными (маленькие «точки», которые вы, вероятно, видели).Если вы хотите сделать все возможное для обеспечения обратной совместимости с Honeycomb, вы можете использовать отражение, чтобы использовать «лучший» метод:

// Ask the System Bar to hide
int whichHiddenStatusToUse = android.view.View.STATUS_BAR_HIDDEN;
try {
    // if this next line doesn't thrown an exception then we are on ICS or  
    // above, so we can use the new field.
    whichHiddenStatusToUse = View.class.getDeclaredField("SYSTEM_UI_FLAG_HIDE_NAVIGATION").getInt(mDrawingSurface);
} catch (Exception ex) {
}
// now lets actually ask one of our views to request the decreased visibility
myView.setSystemUiVisibility(whichHiddenStatusToUse);
23 голосов
/ 12 декабря 2011

попробуйте настроить полноэкранное окно с флагом SYSTEM_UI_FLAG_HIDE_NAVIGATION

6 голосов
/ 11 ноября 2013

Вы хотите SYSTEM_UI_FLAG_HIDE_NAVIGATION .

Этот флаг был добавлен в API-интерфейсе Ice Cream Sandwich 14. До 14 был добавлен флаг STATUS_BAR_HIDDEN в Honeycomb, API 11. До этого программные кнопки навигации не существовали, поэтому в полноэкранном режиме режимы полностью обрабатывались темами (в частности Theme.NoTitleBar.Fullscreen ).

Использование:

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH )
    mBaseLayout.setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );
else if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
    mBaseLayout.setSystemUiVisibility( View.STATUS_BAR_HIDDEN );
0 голосов
/ 22 сентября 2016

в AndroidManifest.xml добавить это:

<uses-permission android:name="android.permission.BROADCAST_STICKY"/>

, затем вы можете использовать эту функцию, чтобы показать и скрыть панель навигации домой / назад

private void changeSystemBarVisibilty(boolean show)
{
    Context context = getApplicationContext();
    final Intent intent = new Intent("android.intent.action.SYSTEM_BAR_VISIBILITY");
    intent.putExtra("show", show);
    context.sendStickyBroadcast(intent);
}
0 голосов
/ 27 января 2016

Этот ответ не может быть прямым ответом на вопрос. но я публикую это, что это может помочь другим сэкономить время.

Мне нужно было полностью скрыть панель навигации. Даже когда пользователь нажимает на экран, он должен оставаться скрытым.

Ничто из вышеперечисленного не помогло мне.

Я написал класс после нескольких дней поиска этой темы давным-давно. Я заканчиваю в этом классе.

UtilsTaskBar.java

Я не мог проверить его везде, но он работает на 4. **

ПРИМЕЧАНИЕ: Я использовал этот класс для приложений специального назначения, а не для обычных пользователей.

Если вы скроете панель навигации с этим классом, она больше не будет отображаться до тех пор, пока вы не перезапустите устройство или не покажете его снова с тем же классом.

Так что используйте его, только если он вам действительно нужен.

0 голосов
/ 13 декабря 2011

Он называется «Режим Lights Out», когда они говорят об этом в приложениях.Я не смог найти ничего, связанного с ICS, но вот ссылка на обсуждение Сота.

где находится вызов API для включения режима отключения света в соте

...