我可以通过在对象中设置它来更改按钮文本外观,如下所示:
<Button
android:id="@+id/login_btn_bypass"
android:textSize="15dp"
android:textColor="#878787"
android:textStyle="bold" />
但在样式
中使用textAppearance时却没有// in layout xml
<Button
android:id="@+id/login_btn_login"
android:textAppearance="@style/login_button_text_appearance" />
// in style definition
<style name="login_button_text_appearance">
<item name="android:textSize">15dp</item>
<item name="android:textColor">#a7a7a7</item>
<item name="android:textStyle">bold</item>
</style>
谁知道为什么?
答案 0 :(得分:12)
使用textAppearance定义的属性值将应用于样式中属性的值之前。 Button
是应用了样式的TextView
,Button的默认样式将覆盖textAppearance(Android 2.3例如将其设置为?android:attr / textAppearanceSmallInverse)和textColor。
textAppearance将样式排除为值,android:textAppearance="@style/login_button_text_appearance"
是设置textAppearance的常用方法,但不适用于Button
:
如果您要更改Button
的文字颜色,您还应该强制执行自定义背景图片,因为如果不这样做,一台设备将使用深色背景图片(motorola defy)而另一台设备将使用一个光图像(htc欲望)可能使文本难以阅读。
答案 1 :(得分:9)
我认为你应该使用:
style = "@style/login_button_text_appearance"
而不是:
android:textAppearance="@style/login_button_text_appearance"
android:textAppearance
只是一个属性,就像任何其他属性一样(android:textSize
,android:textStyle
等等。),并且该样式的值不能作为该属性的值接受
编辑:
<Button
android:id="@+id/login_btn_login"
style="@style/login_button_text_appearance" />