1

Android Q の画面を最大限に活用するためにエッジ ツー エッジ デザインを実装しようとしていましたが、いくつか問題があります。

私のコードは次のとおりです。

アクティビティ:

    <androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/Drawer_Main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.main.main.MainActivity">

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/Layout_Coordinator_Main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutFullscreen="@{true}">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/Toolbar_Main"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorOnSurface"
            android:clipChildren="false"
            android:outlineAmbientShadowColor="@color/colorShadowColor"
            android:outlineSpotShadowColor="@color/colorShadowColor"
            android:paddingStart="8dp"
            android:paddingEnd="8dp"
            app:contentInsetStartWithNavigation="0dp">

...

バインディング アダプタ:

@BindingAdapter("layoutFullscreen")
fun View.bindLayoutFullscreen(previousFullscreen: Boolean, fullscreen: Boolean) {
    if (previousFullscreen != fullscreen && fullscreen) {
        systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    }
}

v29\colors.xml (Android Q のみ)

<resources>
    <!--Set the navigation bar to transparent on Q+ and allow the system to guard against-->
    <!--low contrast scenarios.-->
    <color name="nav_bar">@android:color/transparent</color>
</resources>

色.xml:

<!--Set the navigation bar to transparent on Q+ and allow the system to guard against-->
<!--low contrast scenarios.-->
<color name="nav_bar">@color/colorPrimaryDark</color>

themes.xml

    <!-- Status and navigation bar colors -->
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="android:windowLightStatusBar">@bool/theme_status_bar_light</item>
    <item name="android:navigationBarColor">@color/nav_bar</item>

ナビゲーションはうまく機能しますが、私のツールバーはステータスバーと重なっています:

ステータスバーの問題

私はすでに次のことを試しました:

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

それでもうまくいきません。

編集

@Gabriele Mariottiの回答も試しました

onCreate() に以下のコードを追加しました。

val paddingTop = _binding.ToolbarMain.paddingTop
    ViewCompat.setOnApplyWindowInsetsListener(_binding.ToolbarMain){v, insets ->
        v.updatePadding(top = paddingTop + insets.systemWindowInsetTop)
        insets
    }

最終結果は次のとおりです。

問題2

マテリアル ツールバーの一部がまだ失われています。

誰か助けてくれませんか?

4

2 に答える 2