【问题标题】:Stops BottomNavigationView from increasing items font size on click阻止 BottomNavigationView 在单击时增加项目的字体大小
【发布时间】:2019-10-24 19:30:17
【问题描述】:

BottomNavigationView 的默认行为会使项目的字体在单击它们时增大,从而导致一些较长的标题被截断。

我想避免字体变大,我该怎么做?

谢谢!

【问题讨论】:

    标签: android kotlin tabs font-size bottomnavigationview


    【解决方案1】:

    使用以下键在尺寸文件中添加文本大小

     <dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>
    <dimen name="design_bottom_navigation_text_size" tools:override="true">12sp</dimen>
    

    要消除闪烁,您必须禁用变速。

    import android.annotation.SuppressLint;
    import android.support.design.internal.BottomNavigationItemView;
    import android.support.design.internal.BottomNavigationMenuView;
    import android.support.design.widget.BottomNavigationView;
    import android.util.Log;
    
    import java.lang.reflect.Field;
    
    public class BottomNavigationViewHelper {
        @SuppressLint("RestrictedApi")
        public static void disableShiftMode(BottomNavigationView view) {
            BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
            try {
                Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
                shiftingMode.setAccessible(true);
                shiftingMode.setBoolean(menuView, false);
                shiftingMode.setAccessible(false);
                for (int i = 0; i < menuView.getChildCount(); i++) {
                    BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
                    //noinspection RestrictedApi
                    item.setShifting(false);
                    // set once again checked value, so view will be updated
                    //noinspection RestrictedApi
                    item.setChecked(item.getItemData().isChecked());
                }
            } catch (NoSuchFieldException e) {
                Log.e("Error BottomBar", e.getLocalizedMessage());
            } catch (IllegalAccessException e) {
                Log.e("Error BottomBar", e.getLocalizedMessage());
    
            }
        }
    }
    

    将这个类应用到你的导航视图

    BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
    

    【讨论】:

    • 它可以工作,但不幸的是,单击该项目时会有轻微的闪烁。有没有可能防止这种情况发生?
    【解决方案2】:

    现在您不需要使用反射来禁用移位。

    来自支持库28.0.0或材料库,添加了新方法。

    setLabelVisibilityMode()检查here

    你可以像这样使用它。

    bottomNavigationView.setLabelVisibilityMode(LABEL_VISIBILITY_UNLABELED);
    

    【讨论】:

      猜你喜欢
      • 2014-08-06
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 2012-11-07
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多