我正在尝试使用顶部导航栏、底部导航栏和抽屉制作边缘到边缘的 UI。
BottomNavigationView 不想填充系统导航按钮。 截图
我尝试将BottomNavigationView单独放在LinearLayout中,但仍然是同样的问题。 系统导航按钮的颜色没有改变,BottomNavigationView 也没有与系统导航按钮重叠。
我尝试在没有 BottomNavigationView 的情况下放置按钮和图像,两者都工作良好并且与系统导航按钮重叠。 但是一旦我添加了 BottomNavigationView,它们就消失了?或者已经被遮盖在BottomNavigationView后面,全部变成了系统导航按钮。
我正在使用 Material Design 3,所以我不知道是否存在问题。
我尝试过将fitsSystemWindows添加到所有内容中,尝试过true / false,从某些内容中删除,将其添加到某些内容中,将BottomNavigationView元素移出抽屉,以及太多其他绝望的尝试。
我想要的只是让它像这样截图。
xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="fill_parent"
android:fontFamily="@font/helveticarounded"
android:layout_height="fill_parent"
android:fitsSystemWindows="false"
>
<LinearLayout
android:id="@+id/main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="false"
android:fontFamily="@font/helveticarounded"
android:orientation="vertical"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/AppBarLayout"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_gravity="top"
android:fitsSystemWindows="false"
android:gravity="top"
android:layout_marginTop="0dp"
android:fontFamily="@font/helveticarounded">
<FrameLayout
android:id="@+id/Frame_toolbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="20dp"
android:fontFamily="@font/helveticarounded"
android:fitsSystemWindows="false"
android:elevation="8dp">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/topAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:minHeight="?attr/actionBarSize"
app:navigationIcon="@drawable/baseline_menu_24"
android:layoutDirection="rtl"
android:fitsSystemWindows="false"
android:fontFamily="@font/helveticarounded"
app:title="@string/app_name" />
</FrameLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="fill"
android:fitsSystemWindows="false"
android:layout_weight="1"
android:layout_marginBottom="0dp"
android:fontFamily="@font/helveticarounded" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:fitsSystemWindows="false"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_navigation_menu" />
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:elevation="2dp"
android:fitsSystemWindows="false"
android:layoutDirection="rtl"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/navigation_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
java:
@Override
protected void onCreate(Bundle savedInstanceState) {
EdgeToEdge.enable(this);
super.onCreate(savedInstanceState);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
setContentView(R.layout.main);
}
我检查了BottomNavigationView.java的源代码。
在BottomNavigationView.applyWindowInsets()中,工程师通过在底部添加padding来避免与系统导航栏重叠的问题。
BottomNavigationView组件显示在系统导航栏上方,看起来很符合MaterialUI设计要求。