Intereting Posts
Параллельное выполнение IntentService Проблема сборки бета-версии Firebase / Plugin Android периодически запускает задачу Фильтр намерений Android для определенного расширения файла? Чтение сообщений в ящике определенного номера и отображение их в действии Eclipse не имеет java doc для отображения информации о классе и методах. Как их прикрепить? + андроид Поставщик плавного местоположения не получает местоположение, если GPS не включен Обновить сетку Посмотреть Dyanmically в Android Кордова: не удалось установить apk после обновления Android до 5.1.1 Nexus 5 Хотите скомпилировать родной Android-бинар, я могу запускать в терминале по телефону Как заставить GridView загружать ячейки Android Oauth Exception с подключением SMTP Transport, с версией Android 2.3. Невозможно заставить GearVR MediaSurfacePlugin для Unity воспроизводить видео Как закрыть клавиатуру при открытии ящика навигации? Откройте навигационный ящик, нажав значок приложения.

Прозрачная навигация без отображения макета под панелью состояния

Я использую новый флаг Android 4.4 FLAG_TRANSLUCENT_NAVIGATION чтобы включить панель навигации (назад, кнопка дома и т. Д.) В нижней части экрана полупрозрачного. Это прекрасно работает, но побочным эффектом этого является то, что макет моей активности теперь отображается под строкой состояния в верхней части экрана (хотя я не установил строку состояния как полупрозрачную). Я хочу избежать хакерского исправления, применяя прокладку к вершине макета.

Есть ли способ настроить навигацию как полупрозрачную, в то время как нормальная строка отображается нормально и НЕ позволяет отображать макет под ней?

Код, который я использую, выглядит следующим образом:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } 

благодаря

Ответ ianhanniballake на самом деле работает, но вы не должны использовать android:fitsSystemWindows="true" на верхнем уровне. Используйте это свойство следующим образом:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/colorPrimaryDark"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff" android:fitsSystemWindows="true"> <!-- Your other views --> </LinearLayout> </LinearLayout> 

Как вы можете видеть, вы должны установить цвет на верхнем уровне и поместить его в другой контейнер.

Добавьте android:fitsSystemWindows="true" в ваш вид верхнего уровня – android: fitsSystemWindows автоматически изменит размер представления, чтобы учесть системные окна, такие как строка состояния.