删除 BottomNavigationView 图标和中心标题
Posted
技术标签:
【中文标题】删除 BottomNavigationView 图标和中心标题【英文标题】:Remove BottomNavigationView Icons and center title 【发布时间】:2020-04-18 16:13:19 【问题描述】:我有一个包含 3 个项目的底部导航视图。我只想为每个选项卡设置居中文本,因此希望完全删除图标(不仅使它们透明)。
如何删除图标并使标题居中?
这就是我所拥有的: 这就是我要的:
我的代码:(首选 XML 解决方案)
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:layout_
android:layout_
android:id="@+id/navigationBar"
android:background="@color/navigation"
app:theme="@style/BottomNavigationTheme"
app:menu="@menu/bottom_navigation_menu"
android:minHeight="@dimen/abc_action_bar_default_height_material">
</com.google.android.material.bottomnavigation.BottomNavigationView>
</RelativeLayout>
</merge>
bottom_navigation_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/ic_home"
android:title="@string/home">
</item>
<item
android:id="@+id/ic_today"
android:title="@string/today">
</item>
<item
android:id="@+id/ic_you"
android:title="@string/you">
</item>
</menu>
【问题讨论】:
【参考方案1】:为您的底部工作表添加固定高度并设置底部填充。对我有用。
android:layout_
android:paddingBottom="20dp"
android:clipToPadding="false"
【讨论】:
【参考方案2】:最简单的方法就是使用
android:paddingBottom="16dp" //(any dp you want)
android:clipToPadding="false"
【讨论】:
【参考方案3】:这对我有用
private int baselineHeight = 0;
private void removeIcons(BottomNavigationView view)
BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++)
BottomNavigationItemView itemView = (BottomNavigationItemView) (menuView.getChildAt(i));
BaselineLayout baseline = (BaselineLayout) itemView.getChildAt(1);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) baseline.getLayoutParams();
baselineHeight = baselineHeight > 0 ? baselineHeight : (menuView.getHeight() + baseline.getHeight()) / 2;
layoutParams.height = baselineHeight;
baseline.setLayoutParams(layoutParams);
只需在您的 Activity 中的 onCreate() 中调用它,并将您的 BottomNavigationView 作为参数传递。
如果您不想让过多的代码使您的活动或片段混乱,并且您希望在您的 layout XML 中出现这种情况,您可以创建一个 自定义视图 >扩展BottomNavigationView并在onLayout() override中调用此函数。
【讨论】:
【参考方案4】:您可以使用底部导航视图的此属性来隐藏文本,它会自动将您的图标居中,我认为您不使用 minHeight 属性先生。
app:labelVisibilityMode="unlabeled"
【讨论】:
感谢您的回答,但是我认为您已经错过了理解,我试图隐藏图标并使文本居中。不是反过来。您的解决方案删除了我试图保留的文本以上是关于删除 BottomNavigationView 图标和中心标题的主要内容,如果未能解决你的问题,请参考以下文章
如何禁用 BottomNavigationView 移位模式?
Android BottomNavigationView 底部导航组件使用
Android Notes|BottomNavigationView 爱上 Lottie