平時(shí)使用會(huì)發(fā)現(xiàn),從某個(gè)版本開(kāi)始Button,TabLayout的文字如果是英文的話,它默認(rèn)都給弄成大寫。
Button比較簡(jiǎn)單,xml里其實(shí)能發(fā)現(xiàn)有個(gè)屬性android:textAllCaps修改一下就完事了,或者代碼里設(shè)置setAllCaps(),不過(guò)如果每個(gè)都處理就比較麻煩了,可以在主題里修改下默認(rèn)的為false即可
Button字母默認(rèn)大寫的修改以及源碼查看
主題里添加
<item name="android:textAllCaps">false</item>
這個(gè)屬性TextView就有的,它默認(rèn)是false的,所以Button會(huì)發(fā)生變化肯定是它的默認(rèn)主題的問(wèn)題了。
看下Button的默認(rèn)style是啥
構(gòu)造方法里很容易看到
public Button(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.buttonStyle);
}
然后看下我們的主題
現(xiàn)在基本都是Theme.AppCompat之類的拉
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
上邊的主題是appcompat-v7里的,我們到它下邊的styles.xml里搜索即可,過(guò)程如下
<item name="buttonStyle">@style/Widget.AppCompat.Button</item>
<style name="Widget.AppCompat.Button" parent="Base.Widget.AppCompat.Button"/>
<style name="Base.Widget.AppCompat.Button" parent="android:Widget">
<item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
<item name="android:textAppearance">?android:attr/textAppearanceButton</item>
<item name="android:minHeight">48dip</item>
<item name="android:minWidth">88dip</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
</style>
<item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Widget.Button</item>
<style name="TextAppearance.AppCompat.Widget.Button" parent="Base.TextAppearance.AppCompat.Widget.Button"/>
<style name="Base.TextAppearance.AppCompat.Widget.Button" parent="TextAppearance.AppCompat.Button"/>
<style name="Base.TextAppearance.AppCompat.Button">
<item name="android:textSize">@dimen/abc_text_size_button_material</item>
<item name="android:textAllCaps">true</item>
<item name="android:textColor">?android:textColorPrimary</item>
</style>
最后可以看到android:textAllCaps默認(rèn)為true了。
TabLayout英文字母大寫修改
如下,textview的添加過(guò)程,可以看到設(shè)置了TextAppearance
mTabTextAppearance = a.getResourceId(R.styleable.TabLayout_tabTextAppearance,
R.style.TextAppearance_Design_Tab);

image.png
TabLayout是design包下的,所以我們到design包的style里去找
搜索 TextAppearance.Design.Tab
結(jié)果如下
<style name="TextAppearance.Design.Tab" parent="TextAppearance.AppCompat.Button">
<item name="android:textSize">@dimen/design_tab_text_size</item>
<item name="android:textColor">?android:textColorSecondary</item>
<item name="textAllCaps">true</item>
</style>
恩,這個(gè)比較簡(jiǎn)單,沒(méi)那么深,改起來(lái)也簡(jiǎn)單,我們把這段代碼復(fù)制到我們工程的style下邊,修改一下即可,如下
<style name="TextAppearance.Design.Tab" parent="TextAppearance.AppCompat.Button">
<item name="android:textSize">@dimen/design_tab_text_size</item>
<item name="android:textColor">?android:textColorSecondary</item>
<item name="textAllCaps">false</item>
</style>