2014-10-23 1 views
9

Вот как я устанавливаю свои кнопки.Невозможно переопределить textAllCaps для кнопок по стилю под андроидом 21

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

Это мой стиль в папке значений.

<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> 

И это мой стиль на ценности-V21 папку

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

Но текст всегда прописные на кнопках. Если я установил его прямо на кнопку, он вернется к нормальному состоянию. Я изменил цвет, чтобы увидеть, используется ли стиль для api 21, и это было, цвет текста кнопки был изменен на черный на api 21. Я знаю, что тема по умолчанию устанавливает textAllCaps как true для кнопок, потому что Google считает, что это будет супер-пупер -cool, но разве это не должно быть приоритетом для моего стиля?

Редактировать: neverming, я забыл написать «android:» по стилю.

ответ

22

Я была такая же проблема, и это то, что работает для меня:

<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> 

Надеется, что это помогает.

0

Убедитесь, что следующая строка не говорит "андроид:" перед "textAllCaps"

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

0

Ваш стиль на папке значения-V21 корректная

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

но то же самое время Api уровень выше 21 ваш стиль паста на значениях-v19, а также папка стиля xml

0

В styles.xml

Включите стиль кнопки в вашем AppTheme (который будет использоваться в Применение или активность)

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

создать кнопку стиля

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

Если вы нашли какие-либо проблемы, пожалуйста, сообщите я знаю.