Can't override textAllCaps for buttons on style under android 21

旧时模样 提交于 2019-12-12 08:33:14

问题


This is how I set my buttons.

<Button
    android:id="@+id/button_login"
    style="@style/ButtonStyle"
    android:text="@string/button_login" />

This is my style on values folder.

<style name="ButtonStyle" parent="ButtonStyleBase" />

<style name="ButtonStyleBase">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_marginTop">@dimen/padding</item>
    <item name="android:textSize">@dimen/font_regular</item>
    <item name="android:textColor">@color/text_regular</item>
    <item name="android:background">@drawable/shape_clickable</item>
</style>

And this is my style on values-v21 folder

<style name="ButtonStyle" parent="ButtonStyleBase">
    <item name="textAllCaps">false</item>
    <item name="android:textColor">#000000</item>
</style>

But the text is always uppercase on buttons. If I set it directly on the button it will get back to normal, though. I changed the color to see if the style for api 21 was being used and it was, the button text color changed to black on api 21. I know the default theme sets textAllCaps as true for buttons because google thought it would be super-duper-cool, but shouldn't it prioritize my style?

Edit: neverming, I forgot to write "android:" on the style.


回答1:


I had the same issue and this is what worked for me:

<style name="Theme.CustomTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textAppearanceButton">@style/CustomTheme.ButtonTextAppearance</item>
</style>

<style name="CustomTheme.ButtonTextAppearance" parent="@style/Base.TextAppearance.AppCompat.Button">
    <item name="textAllCaps">false</item>
    <item name="android:textAllCaps">false</item>
</style>

Hope this helps.




回答2:


In styles.xml

Include the button style in your AppTheme(Which will be using in Application or Activity)

    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:buttonStyle">@style/MyButton</item>    
</style>

create button style

<style name="MyButton" parent="Widget.AppCompat.Button">
        <item name="textAllCaps">false</item>
        <item name="android:textAllCaps">false</item>
    </style>

If you found any issue please let me know.




回答3:


Make sure that the following line does not say "android:" before "textAllCaps"

<item name="textAllCaps" tools:targetApi="ice_cream_sandwich">false</item>




回答4:


Your style on values-v21 folder its correct

<style name="ButtonStyle" parent="ButtonStyleBase">
    <item name="textAllCaps">false</item>
    <item name="android:textColor">#000000</item>
</style>

but same time Api level above 21 your style paste on values-v19 and also style folder xml



来源:https://stackoverflow.com/questions/26532199/cant-override-textallcaps-for-buttons-on-style-under-android-21

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!