BottomNavigationView 不允许禁用 shift 模式 这个问题在新版本的支持库中修复了吗?
还有一些使用反射机制的解决方案我不认为它的正确方法是解决这个主要问题。
BottomNavigationView 不允许禁用 shift 模式 这个问题在新版本的支持库中修复了吗?
还有一些使用反射机制的解决方案我不认为它的正确方法是解决这个主要问题。
如果可能的话,然后更新到 android sdk-28 然后添加app:labelVisibilityMode="labeled"
你的 xml。
您只需要更新到 28.0.0 支持库!他们已经提供了setLabelVisibilityMode()方法来禁用移位
navButton.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
您好,我遇到了同样的问题,我知道在 xamarin android 中加载反射 java 库是一项繁琐的任务。
但多亏了“詹姆斯·蒙特马尼奥”来提供它的解决方案。这是您可以访问并获得所需结果的链接!
它对我有用,希望它也对你有用。快乐编码!:)
链接: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);
只需将其添加到您的尺寸中即可……为我工作!
<dimen name="design_bottom_navigation_active_text_size">12sp</dimen>