在安卓中删除底部导航栏文本

12

我在我的应用程序中使用底部导航视图,并希望删除图标下方的文本。我在互联网上搜索了它,但仍然找不到解决方案。如果有人处理过这个问题,请给我您的解决方案。

enter image description here

我只想要这样的效果:

enter image description here

我的代码如下: 主布局包括一个RecyclerView和BottomNavigationView:

<LinearLayout
    android:weightSum="10"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:layout_marginTop="20dp"
        android:layout_weight="8.5"
        android:id="@+id/recyclerview_menu"
        android:layout_width="match_parent"
        android:layout_height="0dp">

    </android.support.v7.widget.RecyclerView>
    <android.support.design.widget.BottomNavigationView
        android:background="@color/whiteColor"
        android:id="@+id/bottom_navigation_bar"
        android:layout_weight="1.5"
        app:menu="@menu/menu_bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="0dp">

    </android.support.design.widget.BottomNavigationView>
</LinearLayout>

这里是底部导航菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_favorites"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title="Home"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/action_schedules"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title="Search"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/action_music"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title="Save"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/action_me"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title="Me"
    app:showAsAction="ifRoom" />

而在MainActivity中:

    mBottomBar = (BottomNavigationView) 
    findViewById(R.id.bottom_navigation_bar);
    disableShiftMode(mBottomBar);

    public void disableShiftMode(BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    try {
        Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
        shiftingMode.setAccessible(true);
        shiftingMode.setBoolean(menuView, false);
        shiftingMode.setAccessible(false);
        for (int i = 0; i < menuView.getChildCount(); i++) {
            BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
            item.setShiftingMode(false);
            // set once again checked value, so view will be updated
            item.setChecked(item.getItemData().isChecked());
        }
    } catch (NoSuchFieldException e) {
        Log.e("Luan", "Unable to get shift mode field");
    } catch (IllegalAccessException e) {
        Log.e("Luan", "Unable to change value of shift mode");
    }
}

我没有看到任何文本。你是什么意思? - Appafly
我的意思是我想让它看起来像第二张图片。我编辑了我的帖子。 - Luan Si Ho
我们需要看到你的代码。 - takendarkk
我添加了我的代码,请看一下。 - Luan Si Ho
@LuanSiHo 我也是,我建议你使用ButtonBarLayout或LinearLayout,这是简单的方法。 - MNFS
显示剩余5条评论
4个回答

48

将 "app:labelVisibilityMode" 设置为 "unlabeled"

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:labelVisibilityMode="unlabeled"/>

2
这个回答真的被低估了。谢谢! - Suleyman

7
删除菜单项中的标题。然后像下面这样对底部导航视图应用上下填充。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_favorites"
android:tittle=""
android:enabled="true"
android:icon="@drawable/ic_search"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_schedules"
android:tittle=""
android:enabled="true"
android:icon="@drawable/ic_search"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_music"
android:tittle=""
android:enabled="true"
android:icon="@drawable/ic_search"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_me"
android:tittle=""
android:enabled="true"
android:icon="@drawable/ic_search"
app:showAsAction="ifRoom" />

在底部导航视图中
 <android.support.design.widget.BottomNavigationView
    android:background="@color/whiteColor"
    android:id="@+id/bottom_navigation_bar"
    android:layout_weight="1.5"
    android:paddingTop="16dp"
    app:menu="@menu/menu_bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="0dp">

添加 android:title="" - Rajesh.k
当然,showAsAction,让我很困扰,因为既没有图标也没有文本居中...谢谢! - Иво Недев

1

您只需要在BottomNavigationView中添加以下代码,标题和烦人的动画就会消失:app:labelVisibilityMode="unlabeled"


-1
我找到了解决方案,请检查以下细微更改。
首先,在底部导航菜单xml文件中进行更改:
更新后的xml:
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_favorites"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title=""
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/action_schedules"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title=""
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/action_music"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title=""
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/action_me"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title=""
    app:showAsAction="ifRoom" />
</menu>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接