amo*_*the 10 android android-support-library androiddesignsupport bottomnavigationview
BottomNavigationView不允许禁用shift模式在新版本的支持库中修复此问题?
还有一些使用反射机制的解决方案我不认为它的正确方法是解决这个主要问题.
你好,我遇到了同样的问题,我知道在 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}");
}
}
}
Run Code Online (Sandbox Code Playgroud)
比使用它:
var BottomNavigationView = FindViewById(Resource.Id.bottomNavigationBar); BottomNavigationView.SetShiftMode(假,假);