2011-11-23 22 views
6

puedo cambiar botón de vista de texto estableciendo que la derecha dentro de objeto como éste:botón Android textAppearance

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

pero no cuando se utiliza dentro de textAppearance estilo

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

alguien sabe por qué?

Respuesta

9

Creo que se debe utilizar:

style = "@style/login_button_text_appearance"

en lugar de

android:textAppearance="@style/login_button_text_appearance"

la android:textAppearance es sólo un attribut como cualquier otro attribut (android:textSize,android:textStyle ... etc), y el el valor del estilo no es aceptable como un valor para ese atributo

EDIT:

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

No veo ningún android: estilo en el botón, ¿cómo debo aplicar su sugerencia? –

+0

no hay ningún atributo llamado android: estilo, nombre directamente el estilo, mira mi edición – Houcine

11

Los valores de atributos definidos usando textAppearance se aplican antes de que los valores de atributos en un estilo. Un Button es un TextView con un estilo aplicado, y el estilo predeterminado de un botón anulará su textoAppearance (Android 2.3, por ejemplo, lo configurará en? Android: attr/textAppearanceSmallInverse) y textColor.

textAppearance exceptúa estilos como valores, android:textAppearance="@style/login_button_text_appearance" es la forma correcta normalmente para establecer una textAppearance, pero no para un Button:

Si va a modificar el color del texto de un Button, también debe cumplir un fondo personalizado imagen porque si no lo hace, un dispositivo utilizará una imagen de fondo oscura (motorola desafía) y otra utilizará una imagen clara (deseo htc) que puede hacer que el texto sea difícil de leer.