实现Bottom Navigation View选中项隐藏标题仅显示图标
不需要依赖第三方库,直接通过系统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
相关产品推荐
相关产品推荐

