平时使用会发现,从某个版本开始Button,TabLayout的文字如果是英文的话,它默认都给弄成大写。
Button比较简单,xml里其实能发现有个属性android:textAllCaps修改一下就完事了,或者代码里设置setAllCaps(),不过如果每个都处理就比较麻烦了,可以在主题里修改下默认的为false即可
Button字母默认大写的修改以及源码查看
主题里添加
<item name="android:textAllCaps">false</item>
这个属性TextView就有的,它默认是false的,所以Button会发生变化肯定是它的默认主题的问题了。
看下Button的默认style是啥
构造方法里很容易看到
public Button(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.buttonStyle);
}
然后看下我们的主题
现在基本都是Theme.AppCompat之类的拉
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
上边的主题是appcompat-v7里的,我们到它下边的styles.xml里搜索即可,过程如下
<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默认为true了。
TabLayout英文字母大写修改
如下,textview的添加过程,可以看到设置了TextAppearance
mTabTextAppearance = a.getResourceId(R.styleable.TabLayout_tabTextAppearance,
R.style.TextAppearance_Design_Tab);
TabLayout是design包下的,所以我们到design包的style里去找
搜索 TextAppearance.Design.Tab
结果如下
<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>
恩,这个比较简单,没那么深,改起来也简单,我们把这段代码复制到我们工程的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>