Как использовать DrawerLayout для отображения на панели ActionBar/Toolbar и в строке состояния на KitKat?

У меня проблемы с внедрением этих рекомендаций в Kitkat. На Lollipop все выглядит нормально:

Но на панели инструментов Kitkat нет верхнего дополнения:

Я могу исправить это с помощью библиотеки https://github.com/jgilfelt/SystemBarTint, используя:

SystemBarTintManager.SystemBarConfig config = tintManager.getConfig();
mainView.setPadding(0, config.getPixelInsetTop(false), config.getPixelInsetRight(), config.getPixelInsetBottom());

Но я чувствую, что делаю что-то неправильно. Есть ли у вас какая-либо хорошая практика, как добиться этого эффекта на KitKat?

2 ответа

Переместите текущий ресурс layout-v21 папку layout-v21 чтобы он был на первом layout-v21 экрана. Затем попробуйте создать новый ресурс макета, который будет иметь только вид-заполнитель той же высоты строки состояния

Иерархия должна быть следующей:

--Top layout --<view layout_height="25dip" ...=""> -- Toolbar -- the rest of the views
</view>

Используя представление над панелью Toolbar, он не будет выталкивать его за панель состояния, поскольку он находится на втором снимке экрана и будет имитировать заполнение, которое вы пытаетесь достичь


У вас есть fitsSystemWindow установлен в true? Если установить значение false, панель инструментов вернется в строку состояния.

Эффект, который вы видите для Kitkat, состоит в том, что у вас есть прозрачная строка состояния и установка в системное окно под ним.

Например, в вашем XML файле макета:

<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:fitssystemwindows="false"> <android.support.v7.widget.toolbar android:background="@color/blue" android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" android:id="@+id/action_bar"> <!-- YOUR CONTENT HERE --> <!-- YOUR NAVIGATION VIEW HERE -->
</android.support.v7.widget.toolbar></android.support.v4.widget.drawerlayout>

licensed under cc by-sa 3.0 with attribution.