Android: windowTranslucentStatus / fitsSystemWindows Панель инструментов неправильного размера

Пытаюсь создать простое представление с полупрозрачной строкой состояния и панелью инструментов, и у меня возникают проблемы с тем, чтобы панель инструментов работала так, как я ожидал. Панель инструментов, похоже, использует свойство fitsSystemWindows bool для своих внутренних элементов (заголовок, меню переполнения), но не для его фактического положения.

Я могу программно получить размер строки состояния и изменить размер панели инструментов, добавив высоту строки состояния, но я понимаю, что fitsSystemWindows=true должен это делать.

Android: windowTranslucentStatus / fitsSystemWindows Панель инструментов неправильного размера

Тема

    <style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name = "colorPrimary">@color/colorPrimary</item>
        <item name = "colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name = "colorAccent">@color/colorAccent</item>
    </style>

    <style name = "AppTheme.NoActionBar">
        <item name = "windowActionBar">false</item>
        <item name = "windowNoTitle">true</item>
        <item name = "android:windowTranslucentStatus" tools:targetApi = "kitkat">true</item>
    </style>

Макет - Примечание: я переместил фон в AppBarLayout, потому что в конечном итоге цель состоит в том, чтобы за панелью инструментов было фоновое изображение. Это не меняет результат, если фон определен в AppBarLayout или на панели инструментов.

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:fitsSystemWindows = "true"
    tools:context = ".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id = "@+id/appbar"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:background = "?attr/colorPrimary"
        android:fitsSystemWindows = "true"
        android:theme = "@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?attr/actionBarSize"
            android:fitsSystemWindows = "true"
            app:popupTheme = "@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <TextView
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:text = "Content Here"
        android:gravity = "center"/>

</android.support.design.widget.CoordinatorLayout>

Просто надеюсь, что мне не хватает простой вещи, которая заставит эту работу работать так, как я понимаю. Добавление атрибута fitsSystemWindows перемещает заголовок и дополнительное меню вниз, но панель инструментов отключается, поскольку она не была перемещена.

1
0
1 133
1

Ответы 1

Макет панели инструментов изменен на высоту wrap_content, похоже, "решает" проблему.

<android.support.v7.widget.Toolbar
    android:id = "@+id/toolbar"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:fitsSystemWindows = "true"
    app:popupTheme = "@style/AppTheme.PopupOverlay" />

Другие вопросы по теме