Панель инструментов перекрывается ниже строки состояния - программирование
Подтвердить что ты не робот

Панель инструментов перекрывается ниже строки состояния

Я хочу иметь панель инструментов appcompat v21 в своей деятельности. Но панель инструментов, которую я реализую, перекрывается ниже строки состояния. Как я могу это исправить?

overlapping toolbar

Вот макет деятельности xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

Вид панели инструментов:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Стиль темы:

<style name="AppTheme" parent="MaterialNavigationDrawerTheme.Light.DarkActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>
4b9b3361

Ответ 1

Используйте android:fitsSystemWindows="true" в корневом представлении вашего макета (LinearLayout в вашем случае). И android:fitsSystemWindows является

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

Должно быть логическое значение: "true" или "false".

Это также может быть ссылка на ресурс (в форме "@[package:] type: name" ) или атрибут темы (в форме "? [package:] [type:] name" ), содержащий значение этого типа.

Это соответствует символу ресурса глобального атрибута fitsSystemWindows.

Ответ 2

Просто установите это в файл v21/styles.xml

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@color/colorPrimaryDark</item>

и убедитесь, что

 <item name="android:windowTranslucentStatus">false</item>

Ответ 3

Для меня проблема заключалась в том, что я скопировал что-то из примера и использовал

<item name="android:windowTranslucentStatus">true</item>

просто удалить эту исправленную мою проблему.

Ответ 4

Ни один из ответов не работал у меня, но это то, что, наконец, работало после того, как я установил android:fitSystemWindows в корневом представлении (я установил их в стилях v21):

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">false</item>

Убедитесь, что не имеет следующую строку: AS по умолчанию:

<item name="android:statusBarColor">@android:color/transparent</item>

Ответ 5

Я удалил все строки, указанные ниже, из /res/values-v21/styles.xml, и теперь он работает нормально.

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@android:color/transparent</item>


 <item name="windowActionBar">false</item>
 <item name="android:windowDisablePreview">true</item>

 <item name="windowNoTitle">true</item>

 <item name="android:fitsSystemWindows">true</item>