Java 删除底部导航视图图标和中心标题

Java 删除底部导航视图图标和中心标题,java,android,xml,android-layout,android-fragments,Java,Android,Xml,Android Layout,Android Fragments,我有一个底部导航视图,包含3个项目。我只希望每个选项卡的文本居中,因此希望完全删除图标(而不仅仅是使其透明) 如何删除图标并将标题居中 这就是我所拥有的: 这就是我想要的: 我的代码:(首选XML解决方案) 底部导航菜单.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app

我有一个底部导航视图,包含3个项目。我只希望每个选项卡的文本居中,因此希望完全删除图标(而不仅仅是使其透明)

如何删除图标并将标题居中

这就是我所拥有的: 这就是我想要的:

我的代码:(首选XML解决方案)


底部导航菜单.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>

您可以使用底部导航视图的此属性隐藏文本,它会自动将您的图标居中,我认为您不使用最小高度属性,先生。
app:labelVisibilityMode=“unlabeled”

这对我来说很有效

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);
    }
}
private int baselineHeight=0;
私有void removicons(底部导航视图){
BottomNavigationMenuView menuView=(BottomNavigationMenuView)视图;
对于(int i=0;i0?baselineHeight:(menuView.getHeight()+baseline.getHeight())/2;
layoutParams.height=基线高度;
基线。setLayoutParams(layoutParams);
}
}
只需在活动中的onCreate()中调用它,并将BottomNavigationView作为参数传递


如果您不想用过多的代码使活动或片段杂乱无章,并且希望将其显示在布局XML中,您可以创建一个自定义视图,该视图扩展了BottomNavigationView,并在onLayout()override中调用该函数,最简单的方法就是使用

android:paddingBottom="16dp" //(any dp you want)
android:clipToPadding="false"

谢谢你的回答,不过我想你没有理解,我正试图隐藏图标并将文本居中。而不是相反。您的解决方案删除了我试图保留的文本
android:paddingBottom="16dp" //(any dp you want)
android:clipToPadding="false"