You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现Bottom Navigation View选中项隐藏标题仅显示图标

实现BottomNavigationView点击项隐藏标签的自定义效果

不需要依赖第三方库,直接通过系统API结合setOnNavigationItemSelectedListener就能实现需求——点击任意导航项时,仅隐藏当前选中项的标签,其余项保留标签显示。

核心思路

遍历BottomNavigationView的所有菜单项,针对当前选中项设置标签不可见,未选中项设置标签可见,通过MenuItem.setLabelVisibilityMode()实现精细控制。

代码实现

Kotlin 版本

// 初始化BottomNavigationView
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_nav)

// 设置选中监听
bottomNavigationView.setOnNavigationItemSelectedListener { menuItem ->
    // 遍历所有菜单项,逐个设置标签可见性
    for (i in 0 until bottomNavigationView.menu.size()) {
        val item = bottomNavigationView.menu.getItem(i)
        item.setLabelVisibilityMode(
            if (item.itemId == menuItem.itemId) {
                MenuItem.LABEL_VISIBILITY_UNLABELED // 选中项隐藏标签
            } else {
                MenuItem.LABEL_VISIBILITY_LABELED // 未选中项显示标签
            }
        )
    }

    // 处理页面切换逻辑(根据你的需求补充)
    when (menuItem.itemId) {
        R.id.tested -> {
            // 切换到tested对应的页面
        }
        // 其他导航项的页面切换逻辑
    }
    true
}

// 首次进入时,默认选中项自动隐藏标签(可选)
val defaultSelectedItem = bottomNavigationView.menu.getItem(0)
defaultSelectedItem.setLabelVisibilityMode(MenuItem.LABEL_VISIBILITY_UNLABELED)

Java 版本

BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_nav);

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        // 遍历所有菜单项设置标签可见性
        for (int i = 0; i < bottomNavigationView.getMenu().size(); i++) {
            MenuItem item = bottomNavigationView.getMenu().getItem(i);
            item.setLabelVisibilityMode(item.getItemId() == menuItem.getItemId()
                    ? MenuItem.LABEL_VISIBILITY_UNLABELED
                    : MenuItem.LABEL_VISIBILITY_LABELED);
        }

        // 页面切换逻辑
        switch (menuItem.getItemId()) {
            case R.id.tested:
                // 处理tested页面跳转
                break;
            // 其他导航项逻辑
        }
        return true;
    }
});

// 初始化默认选中项的标签隐藏
MenuItem defaultSelectedItem = bottomNavigationView.getMenu().getItem(0);
defaultSelectedItem.setLabelVisibilityMode(MenuItem.LABEL_VISIBILITY_UNLABELED);

补充说明

  • 你之前尝试的Selector仅能控制图标状态切换,无法影响标签可见性;全局设置labelVisibilityMode = LABEL_VISIBILITY_UNLABELED会批量隐藏所有标签,都无法满足"仅隐藏选中项标签"的需求。
  • 上述方法完全依赖Android系统原生API,无需引入任何第三方库,兼容性和稳定性更有保障。

内容的提问来源于stack exchange,提问作者itsmebil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 22:48:18