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
}
最終結果は次のとおりです。
マテリアル ツールバーの一部がまだ失われています。
誰か助けてくれませんか?