BottomNavigationView默認(rèn)是有icon+title的形式??梢酝ㄟ^覆蓋其dimen屬性,使其只顯示icon居中效果,如下:
<!--BottomNavigationView設(shè)置圖標(biāo)居中無title 復(fù)寫其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以下設(shè)備可以正常使用,但在Android9.0測試中,發(fā)現(xiàn)會出現(xiàn)如下錯誤信息:
Caused by: java.lang.IllegalArgumentException: Cannot set 'scaleX' to Float.NaN
E/AndroidRuntime: at android.view.View.sanitizeFloatPropertyValue(View.java:16557)
無法設(shè)置一個NaN數(shù)到scaleX變量上
解決方案很簡單,只要把design_bottom_navigation_text_size,design_bottom_navigation_active_text_size
的覆蓋方案改為大于0的數(shù)就行了:
<!--BottomNavigationView設(shè)置圖標(biāo)居中無title 復(fù)寫其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設(shè)備運行效果圖
(初步猜想應(yīng)該是android9.0更新了代碼 把這兩個dimen值作為除數(shù)了吧。。。)