Оверлейная панель состояния 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).
спасибо!
Ответы
Ответ 1
по-видимому, вы можете сделать это в Jellybean. Google включает два примера в api docs. вот ссылка: http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility%28int%29
Резюме:
используйте setSystemUiVisibility
для просмотра видимости (на jellybean +).
Ответ 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);
обратитесь: ссылка