BottomNavigationView禁用移位模式而不使用反射

问题描述 投票:10回答:4

enter image description here

BottomNavigationView不允许禁用shift模式在新版本的支持库中修复此问题?

还有一些使用反射机制的解决方案我不认为它的正确方法是解决这个主要问题。

All ready seen this solution don't want to use this

android android-support-library androiddesignsupport bottomnavigationview
4个回答
1
投票

如果可能,然后更新到android sdk-28然后在你的xml中添加app:labelVisibilityMode="labeled"


0
投票

您好,我遇到了同样的问题,我知道加载的繁琐任务反映了xamarin android中的java库。

但感谢“James Montemagno”提供解决方案。这是您可以关注的链接,并获得您想要的结果!

它对我有用,希望它也适合你。快乐的编码! :)

链接:https://montemagno.com/remove-shifting-bottomnavigationview-android/

Git Post:https://github.com/jamesmontemagno/Xamarin-Templates/blob/master/Xamarin.Android-Templates/Projects/BottomTabsApp/BlankAppCompat/BottomNavigationViewUtils.cs

public static class 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);


0
投票

您只需要更新到28.0.0支持库!他们已经提供了setLabelVisibilityMode()方法来禁用移位

navButton.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);

有关更多信息,请查看https://developer.android.com/reference/com/google/android/material/bottomnavigation/LabelVisibilityMode.html#LABEL_VISIBILITY_SELECTED


0
投票

只需在你的尺寸中添加它..为我工作!

<dimen name="design_bottom_navigation_active_text_size">12sp</dimen>
© www.soinside.com 2019 - 2024. All rights reserved.