BottomNavigationView不允许禁用转换模式在新版支持库中修复此问题?
还有一些解决方案使用反射机制我不认为正确的方法是解决这个主要问题。
答案 0 :(得分:1)
如果可能,请更新至android sdk-28,然后在您的xml中添加app:labelVisibilityMode="labeled"
。
答案 1 :(得分:0)
您好我遇到了同样的问题,我知道加载的繁琐任务反映了xamarin android中的java库。
但感谢" James Montemagno "提出解决方案。这是您可以关注的链接,并获得您想要的结果!
它对我有用,希望它也适合你。快乐的编码! :)
链接: https://montemagno.com/remove-shifting-bottomnavigationview-android/
公共静态类BottomNavigationViewUtils {
/// <summary>
/// Enable or disable shift mode on bottom navigation view
/// </summary>
public static void SetShiftMode(this BottomNavigationView bottomNavigationView, bool enableShiftMode, bool enableItemShiftMode)
{
try
{
var menuView = bottomNavigationView.GetChildAt(0) as BottomNavigationMenuView;
if (menuView == null)
{
System.Diagnostics.Debug.WriteLine("Unable to find BottomNavigationMenuView");
return;
}
var shiftMode = menuView.Class.GetDeclaredField("mShiftingMode");
shiftMode.Accessible = true;
shiftMode.SetBoolean(menuView, enableShiftMode);
shiftMode.Accessible = false;
shiftMode.Dispose();
for (int i = 0; i < menuView.ChildCount; i++)
{
var item = menuView.GetChildAt(i) as BottomNavigationItemView;
if (item == null)
continue;
item.SetShiftingMode(enableItemShiftMode);
item.SetChecked(item.ItemData.IsChecked);
}
menuView.UpdateMenuView();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Unable to set shift mode: {ex}");
}
}
}
比使用它:
var bottomNavigationView = FindViewById(Resource.Id.bottomNavigationBar); bottomNavigationView.SetShiftMode(FALSE,FALSE);
答案 2 :(得分:0)
您只需要更新到28.0.0支持库! 他们已经提供了 setLabelVisibilityMode()方法来禁用移位
navButton.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
答案 3 :(得分:0)
只需将此添加到您的调子中即可。对我有用!
<dimen name="design_bottom_navigation_active_text_size">12sp</dimen>