BottomNavigationView
默认是有icon+title的形式。可以通过覆盖其dimen属性,使其只显示icon居中效果,如下:
<!--BottomNavigationView设置图标居中无title 复写其size方案-->
<dimen name="design_bottom_navigation_text_size" tools:override="true">0sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">0sp</dimen>
<dimen name="design_bottom_navigation_height" tools:override="true">48dp</dimen>
<dimen name="design_bottom_navigation_margin" tools:override="true">12dp</dimen>
在Android9.0以下设备可以正常使用,但在Android9.0测试中,发现会出现如下错误信息:
Caused by: java.lang.IllegalArgumentException: Cannot set 'scaleX' to Float.NaN
E/AndroidRuntime: at android.view.View.sanitizeFloatPropertyValue(View.java:16557)
无法设置一个NaN数到scaleX
变量上
解决方案很简单,只要把design_bottom_navigation_text_size
,design_bottom_navigation_active_text_size
的覆盖方案改为大于0的数就行了:
<!--BottomNavigationView设置图标居中无title 复写其size方案-->
<dimen name="design_bottom_navigation_text_size" tools:override="true">0.1sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">0.1sp</dimen>
<dimen name="design_bottom_navigation_height" tools:override="true">48dp</dimen>
<dimen name="design_bottom_navigation_margin" tools:override="true">12dp</dimen>
android9.0设备运行效果图
(初步猜想应该是android9.0更新了代码 把这两个dimen值作为除数了吧。。。)
网友评论