Android BottomNavigationView 有奇怪的底部填充

Qbi*_*Qbi 2 android android-layout

我有带有 Bottom_navigation 的 main_layout 和带有其他一些组件的片段。左侧片段处于纵向方向,此处的 NavigationBottomView 看起来不错,但在方向设置为横向的右侧片段上,底部还有一个填充。问题是如何在横向模式下删除导航视图底部的填充?第一张截图:

\n

在此输入图像描述\n在此输入图像描述

\n

现在代码:

\n

main_activity.xml

\n
<?xml version="1.0" encoding="utf-8"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:app="http://schemas.android.com/apk/res-auto"\n    xmlns:tools="http://schemas.android.com/tools"\n    android:id="@+id/main_layout"\n    android:layout_width="match_parent"\n    android:layout_height="match_parent"\n    android:background="@color/colorBackground"\n    android:filterTouchesWhenObscured="true"\n    tools:context="pl.anwim.zcspa.activities.MainActivity">\n\n    <ProgressBar\n        android:id="@+id/progress"\n        style="?android:attr/progressBarStyleLarge"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:indeterminate="true"\n        android:visibility="gone"\n        app:layout_constraintBottom_toBottomOf="parent"\n        app:layout_constraintEnd_toEndOf="parent"\n        app:layout_constraintStart_toStartOf="parent"\n        app:layout_constraintTop_toTopOf="parent" />\n\n    <androidx.fragment.app.FragmentContainerView\n        android:id="@+id/nav_host_fragment"\n        android:name="androidx.navigation.fragment.NavHostFragment"\n        android:layout_width="0dp"\n        android:layout_height="0dp"\n        app:defaultNavHost="true"\n        app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"\n        app:layout_constraintLeft_toLeftOf="parent"\n        app:layout_constraintRight_toRightOf="parent"\n        app:layout_constraintTop_toBottomOf="@id/toolbar_include"\n        app:navGraph="@navigation/nav_graph" />\n\n    <com.google.android.material.bottomnavigation.BottomNavigationView\n        android:id="@+id/bottom_navigation"\n        android:layout_width="0dp"\n        android:layout_height="wrap_content"\n        android:background="@color/colorWhite"\n        app:layout_constraintBottom_toBottomOf="parent"\n        app:layout_constraintEnd_toEndOf="parent"\n        app:layout_constraintStart_toStartOf="parent"\n        app:layout_constraintTop_toBottomOf="@id/nav_host_fragment"\n        app:menu="@menu/role_dispatcher_menu" />\n\n    <include\n        android:id="@+id/toolbar_include"\n        layout="@layout/common_toolbar_hamburger"\n        app:layout_constraintBottom_toTopOf="@+id/nav_host_fragment"\n        app:layout_constraintLeft_toLeftOf="parent"\n        app:layout_constraintRight_toRightOf="parent"\n        app:layout_constraintTop_toTopOf="parent" />\n</androidx.constraintlayout.widget.ConstraintLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

(左)对手站列表片段.xml

\n
<?xml version="1.0" encoding="utf-8"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:app="http://schemas.android.com/apk/res-auto"\n    xmlns:tools="http://schemas.android.com/tools"\n    android:layout_width="match_parent"\n    android:layout_height="match_parent">\n\n    <androidx.constraintlayout.widget.ConstraintLayout\n        android:id="@+id/card_list"\n        android:layout_width="match_parent"\n        android:layout_height="match_parent">\n\n        <com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout\n            android:id="@+id/admin_card_list_refresh"\n            android:layout_width="match_parent"\n            android:layout_height="0dp"\n            app:layout_constraintBottom_toBottomOf="parent"\n            app:layout_constraintTop_toBottomOf="@id/card_list_title"\n            app:srl_direction="bottom">\n\n            <se.emilsjolander.stickylistheaders.StickyListHeadersListView\n                android:id="@+id/admin_card_list"\n                android:layout_width="match_parent"\n                android:layout_height="match_parent"\n                tools:context="pl.anwim.mobile.v2.customer.activities.adminCard.AdminCardListFragment"\n                tools:listitem="@layout/opponent_station_list_row_fragment" />\n\n        </com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout>\n\n        <pl.anwim.zcspa.ui.component.CustomTextView\n            android:id="@+id/card_list_title"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:padding="@dimen/dp_10"\n            android:text="@string/no"\n            android:textAppearance="@style/Primary20BoldText"\n            app:ctv_backgroundColor="@color/colorTransparent"\n            app:ctv_iconColor="@color/colorPrimary"\n            app:ctv_iconDrawable="@drawable/ic_card"\n            app:ctv_iconPadding="@dimen/dp_15"\n            app:ctv_iconSize="@dimen/list_icon_size"\n            app:ctv_textColor="@color/colorPrimary"\n            app:layout_constraintTop_toTopOf="parent" />\n\n    </androidx.constraintlayout.widget.ConstraintLayout>\n</androidx.constraintlayout.widget.ConstraintLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

(右)history_fragment.xml

\n
<?xml version="1.0" encoding="utf-8"?>\n<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:app="http://schemas.android.com/apk/res-auto"\n    android:layout_width="match_parent"\n    android:layout_height="match_parent">\n\n    <androidx.constraintlayout.widget.ConstraintLayout\n        android:layout_width="match_parent"\n        android:layout_height="match_parent">\n\n        <RelativeLayout\n            android:id="@id/rl1"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:orientation="vertical"\n            app:layout_constraintEnd_toEndOf="parent"\n            app:layout_constraintStart_toStartOf="parent"\n            app:layout_constraintTop_toBottomOf="@+id/card_list_title">\n\n            <View\n                android:id="@+id/hline1"\n                android:layout_width="fill_parent"\n                android:layout_height="5dip"\n                android:layout_marginTop="10dp"\n                android:layout_marginBottom="2dp"\n                android:layout_toLeftOf="@+id/header1"\n                android:background="#000000" />\n\n            <TextView\n                android:id="@+id/header1"\n                android:layout_width="wrap_content"\n                android:layout_height="wrap_content"\n                android:layout_centerHorizontal="true"\n                android:layout_marginHorizontal="10dp"\n                android:text="Filtrowanie"\n                android:textColor="#000000"\n                android:textSize="20dp"\n                android:textStyle="bold" />\n\n            <View\n                android:id="@+id/hline2"\n                android:layout_width="fill_parent"\n                android:layout_height="5dip"\n                android:layout_marginTop="10dp"\n                android:layout_toRightOf="@+id/header1"\n                android:background="#000000" />\n\n        </RelativeLayout>\n\n\n        <LinearLayout\n            android:id="@+id/ll2"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:orientation="horizontal"\n            android:weightSum="3"\n            app:layout_constraintEnd_toEndOf="parent"\n            app:layout_constraintStart_toStartOf="parent"\n            app:layout_constraintTop_toBottomOf="@+id/rl1">\n\n            <RelativeLayout\n                android:layout_width="0dp"\n                android:layout_height="wrap_content"\n                android:layout_weight="1">\n\n                <EditText\n                    android:id="@+id/date_filter1"\n                    android:layout_width="match_parent"\n                    android:layout_height="wrap_content"\n                    android:layout_weight="1"\n                    android:focusableInTouchMode="false"\n                    android:gravity="center"\n                    android:hint="Data od"\n                    android:inputType="none"\n                    android:textColor="@color/ms_black"\n                    android:textSize="20sp" />\n\n                <EditText\n                    android:id="@+id/date_filter2"\n                    android:layout_width="match_parent"\n                    android:layout_height="wrap_content"\n                    android:layout_below="@id/date_filter1"\n                    android:layout_weight="1"\n                    android:focusableInTouchMode="false"\n                    android:gravity="center"\n                    android:hint="Data do"\n                    android:inputType="none"\n                    android:textColor="@color/ms_black"\n                    android:textSize="20sp" />\n\n            </RelativeLayout>\n\n            <EditText\n                android:id="@+id/report_history_station_value"\n                android:layout_width="0dp"\n                android:layout_height="match_parent"\n                android:layout_weight="1"\n                android:gravity="center"\n                android:hint="Nazwa stacji"\n                android:textColor="@color/ms_black"\n                android:textSize="20sp" />\n\n            <CheckBox\n                android:id="@+id/report_history_proper_value"\n                android:layout_width="0dp"\n                android:layout_height="match_parent"\n                android:layout_weight="1"\n                android:gravity="center"\n                android:hint="Prawid\xc5\x82owo\xc5\x9b\xc4\x87"\n                android:textColor="@color/ms_black"\n                android:textSize="20sp" />\n        </LinearLayout>\n\n        <Button\n            android:id="@+id/button"\n            android:layout_width="wrap_content"\n            android:layout_height="wrap_content"\n            android:text="Filtruj"\n            app:layout_constraintEnd_toEndOf="parent"\n            app:layout_constraintStart_toStartOf="parent"\n            app:layout_constraintTop_toBottomOf="@+id/ll2" />\n\n        <RelativeLayout\n            android:id="@+id/rl2"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:layout_marginTop="@dimen/dp_10"\n            android:orientation="vertical"\n            app:layout_constraintEnd_toEndOf="parent"\n            app:layout_constraintStart_toStartOf="parent"\n            app:layout_constraintTop_toBottomOf="@+id/button">\n\n            <View\n                android:id="@+id/hline3"\n                android:layout_width="fill_parent"\n                android:layout_height="5dip"\n                android:layout_marginTop="10dp"\n                android:layout_marginBottom="2dp"\n                android:layout_toLeftOf="@+id/header2"\n                android:background="#000000" />\n\n            <TextView\n                android:id="@+id/header2"\n                android:layout_width="wrap_content"\n                android:layout_height="wrap_content"\n                android:layout_centerHorizontal="true"\n                android:layout_marginHorizontal="10dp"\n                android:text="Filtrowanie"\n                android:textColor="#000000"\n                android:textSize="20dp"\n                android:textStyle="bold" />\n\n            <View\n                android:id="@+id/hline4"\n                android:layout_width="fill_parent"\n                android:layout_height="5dip"\n                android:layout_marginTop="10dp"\n                android:layout_toRightOf="@+id/header2"\n                android:background="#000000" />\n\n        </RelativeLayout>\n\n        <androidx.recyclerview.widget.RecyclerView\n            android:id="@+id/history_recycler"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:background="@color/colorLightGray"\n            app:layout_constraintEnd_toEndOf="parent"\n            app:layout_constraintTop_toBottomOf="@id/rl2" />\n\n\n        <pl.anwim.zcspa.ui.component.CustomTextView\n            android:id="@+id/card_list_title"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:padding="@dimen/dp_10"\n            android:text="@string/no"\n            android:textAppearance="@style/Primary20BoldText"\n            app:ctv_backgroundColor="@color/colorTransparent"\n            app:ctv_iconColor="@color/colorPrimary"\n            app:ctv_iconDrawable="@drawable/ic_card"\n            app:ctv_iconPadding="@dimen/dp_15"\n            app:ctv_iconSize="@dimen/list_icon_size"\n            app:ctv_textColor="@color/colorPrimary"\n            app:layout_constraintTop_toTopOf="parent" />\n\n\n    </androidx.constraintlayout.widget.ConstraintLayout>\n</androidx.core.widget.NestedScrollView>\n
Run Code Online (Sandbox Code Playgroud)\n

如果还有什么您需要知道的,请告诉我。先感谢您!

\n

小智 8

我遇到了类似的问题,从全屏横向模式旋转到纵向模式后,额外的 BottomPadding 被添加到 BottomNavigationView 中。

找到了一些相关链接 -

最后对我有用的是 - https://github.com/material-components/material-components-android/issues/499#issuecomment-519618931

在 MainActivity 中,onCreate() -

 mainBinding.bottomNavigationView.setOnApplyWindowInsetsListener(null)
 mainBinding.bottomNavigationView.setPadding(0,0,0,0)
Run Code Online (Sandbox Code Playgroud)