【发布时间】:2019-10-24 19:30:17
【问题描述】:
BottomNavigationView 的默认行为会使项目的字体在单击它们时增大,从而导致一些较长的标题被截断。
我想避免字体变大,我该怎么做?
谢谢!
【问题讨论】:
标签: android kotlin tabs font-size bottomnavigationview
BottomNavigationView 的默认行为会使项目的字体在单击它们时增大,从而导致一些较长的标题被截断。
我想避免字体变大,我该怎么做?
谢谢!
【问题讨论】:
标签: android kotlin tabs font-size bottomnavigationview
使用以下键在尺寸文件中添加文本大小
<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);
【讨论】:
现在您不需要使用反射来禁用移位。
来自支持库28.0.0或材料库,添加了新方法。
setLabelVisibilityMode()检查here。
你可以像这样使用它。
bottomNavigationView.setLabelVisibilityMode(LABEL_VISIBILITY_UNLABELED);
【讨论】: