android英文字母默認(rèn)大寫的問(wèn)題

平時(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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容