Подтвердить что ты не робот

Оверлейная панель состояния Android с ActionBar

Я знаю, что я могу сделать наложение ActionBar с помощью requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
и может переключать/показывать строку состояния на моем экране (путем переключения между FLAG_FULLSCREEN и FLAG_FORCE_NOT_FULLSCREEN).
Это отлично работает. Тем не менее, я не хочу, чтобы мой макет перемещался, когда я переключаю строку состояния.

Я знаю, что я могу сделать строку состояния "overlay" (хотя и не прозрачно) с помощью:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

Это также отлично, за исключением ожидаемого результата: при использовании ActionBar ActionBar получает половину среза - половина из них находится в строке состояния в основном.

Итак, мне интересно, есть ли способ "переместить ActionBar вниз" на высоту строки состояния в этом случае?
Я знаю, что в худшем случае я могу сделать это с помощью настраиваемого представления, которое живет в макете, но я не хочу этого делать (хочу воспользоваться ActionBar).

спасибо!

4b9b3361

Ответ 2

Это не идеально, но я достиг того, чего вы хотите:

В onCreate:

GetWindow() setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);.

Тогда:

private void hideStatusBar() {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);

}

private void showStatusBar() {
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

У меня также есть стиль для активности со следующим:

 <style name="readingStyle" parent="@style/Theme.Sherlock">
     <item name="android:windowActionBarOverlay">true</item>  
     <item name="windowActionBarOverlay">true</item>       
 </style> 

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

Ответ 3

Почему вы не делаете это в манифесте

android:theme="@android:style/Theme.Black.NoTitleBar"

чем у вас нет панели состояния и больше места для панели действий?

Ответ 4

Поместите этот метод в действие метода onCreate():

getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

обратитесь: ссылка