我使用的是来自设计支持库版本25的android.support.design.widget.BottomNavigationView
compile 'com.android.support:design:25.0.0'
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
app:itemBackground="@color/colorPrimary"
app:menu="@menu/bottom_navigation_main"
android:forceHasOverlappingRendering="true"/>
当@menu/bottom_navigation_main中只有三个动作时,它会同时显示图标和文本标签。
当有三个以上的操作时,同时显示图标和文本标签的方式是什么?
发布于 2018-05-26 23:42:08
对于任何仍在寻找解决方案并且不想依赖于第三方库或运行时反射的人,Support Library 28/Jetpack中的BottomNavigationView本机支持始终具有文本标签。
This是您正在寻找的方法。
或者在XML中,app:labelVisibilityMode="labeled"
发布于 2016-11-05 23:56:11
这在版本25中是困难的。
试试这段代码。但我认为这不是一个好的解决方案。
BottomNavigationView navigationView = (BottomNavigationView) findViewById(R.id.bottomBar);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView itemView = (BottomNavigationItemView) menuView.getChildAt(i);
itemView.setShiftingMode(false);
itemView.setChecked(false);
}
发布于 2018-05-17 21:58:13
这是一个Kotlin扩展函数,它结合了@STAR_ZERO和@KishanSolanki124的解决方案。
fun BottomNavigationView.disableShiftMode() {
val menuView = getChildAt(0) as BottomNavigationMenuView
menuView.javaClass.getDeclaredField("mShiftingMode").apply {
isAccessible = true
setBoolean(menuView, false)
isAccessible = false
}
@SuppressLint("RestrictedApi")
for (i in 0 until menuView.childCount) {
(menuView.getChildAt(i) as BottomNavigationItemView).apply {
setShiftingMode(false)
setChecked(false)
}
}
}
要使用它:
myBottomNavigation.disableShiftMode()
https://stackoverflow.com/questions/40396545
复制相似问题