未将支持库升级到v-28.0.0
BottomNavigationView
切换模式后。即使我正在使用app:labelVisibilityMode="labeled"
,但项目正在移动,并且项目文本在选择时被剪切。
以前,我是使用反射来做到这一点的。还有其他禁用变速模式的方法。
答案 0 :(得分:0)
这可能会有所帮助(这是科特林):
@SuppressLint("RestrictedApi")
fun disableShiftMode(view: BottomNavigationView) {
val menuView = view.getChildAt(0) as BottomNavigationMenuView
try {
val shiftingMode = menuView.javaClass.getDeclaredField("mShiftingMode")
shiftingMode.isAccessible = true
shiftingMode.setBoolean(menuView, false)
shiftingMode.isAccessible = false
for (i in 0 until menuView.childCount) {
val item = menuView.getChildAt(i) as BottomNavigationItemView
item.setShiftingMode(false)
// set once again checked value, so view will be updated
item.setChecked(item.itemData.isChecked)
}
} catch (e: NoSuchFieldException) {
Log.e(TAG, "Unable to get shift mode field")
} catch (e: IllegalAccessException) {
Log.e(TAG, "Unable to change value of shift mode");
}
}
答案 1 :(得分:0)
尝试将app:itemTextAppearanceActive
和app:itemTextAppearanceInactive
设置为相同的textAppearance样式,或者将textSize
和fontFamily
设置为相同的样式
答案 2 :(得分:0)
对我来说,在XML中启用具有match_parent宽度的转换模式
app:labelVisibilityMode="selected"
禁用变速模式
app:labelVisibilityMode="labeled"
&删除您的反射。我的照常工作。