Android button textAppearance

13,778

Solution 1

I think you should use :

style = "@style/login_button_text_appearance"

instead of:

android:textAppearance="@style/login_button_text_appearance"

The android:textAppearance is just an attribute like any other attribute ( android:textSize, android:textStyle, etc..) , and the value of the style is not acceptable as a value for that attribute.

EDIT :

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

Solution 2

The values of attributes defined using textAppearance are applied before the values of attributes in a style. A Button is a TextView with a style applied, and the default style of a Button will override your textAppearance (Android 2.3 for example will set it to ?android:attr/textAppearanceSmallInverse) and textColor.

textAppearance accepts styles as values; android:textAppearance="@style/login_button_text_appearance" is the normally correct way to set a textAppearance, but not for a Button:

If you're changing the text colour of a Button, you should also enforce a custom background image because if you don't, one device will use a dark background image (motorola defy) and another will use a light image (htc desire) which may make the text difficult to read.

Share:
13,778
Marek Sebera
Author by

Marek Sebera

Updated on June 04, 2022

Comments

  • Marek Sebera
    Marek Sebera almost 2 years

    I can change button text appearance by setting it right within object like this:

    <Button
            android:id="@+id/login_btn_bypass"
            android:textSize="15dp"
            android:textColor="#878787"
            android:textStyle="bold" />
    

    but not when using textAppearance within style

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

    anyone knows why?

  • Marek Sebera
    Marek Sebera over 12 years
    I don't see any android:style on Button, how should I apply your suggestion?
  • Houcine
    Houcine over 12 years
    there is no attribut named android:style , it name directly style , see my edit