android英文字母默认大写的问题

平时使用会发现,从某个版本开始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);
image.png

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容