Android按钮textAppearance

时间:2011-11-23 15:59:26

标签: android button styles appearance

我可以通过在对象中设置它来更改按钮文本外观,如下所示:

<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>
谁知道为什么?

2 个答案:

答案 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:textSizeandroid:textStyle等等。),并且该样式的值不能作为该属性的值接受

编辑:

<Button
    android:id="@+id/login_btn_login"
    style="@style/login_button_text_appearance" />