2010-12-16 6 views
6

He definido algunos recursos de estilo que incluyen TextAppearance con un TextColor definido. A continuación, aplico los estilos a algunos TextViews y botones. Todos los estilos vienen con TextView, pero no con Button. Por algún motivo, el atributo textColor no se muestra. ¿Es esto un error, o me estoy perdiendo algo en el caso del botón?TextColor definido en estilo aplicado a TextView, pero no Button?

Aquí es la definición de estilo:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 

    <style name="TestApp">  
    </style> 

    <!-- Text Appearances --> 
    <style name="TestApp.TextAppearance"> 
     <item name="android:typeface">sans</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">16px</item>  
     <item name="android:textColor">#6666FF</item> 
    </style> 

    <!-- Widget Styles --> 
    <style name="TestApp.Widget"> 
     <item name="android:layout_margin">3sp</item> 
    </style> 

    <style name="TestApp.Widget.Label"> 
     <item name="android:textAppearance">@style/TestApp.TextAppearance</item> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">wrap_content</item> 
    </style> 

    <style name="TestApp.Widget.Switch"> 
     <item name="android:textAppearance">@style/TestApp.TextAppearance</item> 
     <item name="android:layout_width">100px</item> 
     <item name="android:layout_height">100px</item> 
    </style> 

</resources> 

y aquí está la presentación en la que trato de aplicarlos:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
<TextView 
    style="@style/TestApp.Widget.Label" 
    android:text="This is my label." /> 
<TextView 
    style="@style/TestApp.Widget.Label" 
    android:text="This is my disabled label." 
    android:enabled="false" /> 
<Button 
    style="@style/TestApp.Widget.Switch" 
    android:text="This is my switch." /> 
<Button 
    style="@style/TestApp.Widget.Switch" 
    android:text="This is my disabled switch." 
    android:enabled="false" /> 
</LinearLayout> 

Respuesta

0

Parece que hay un textAppearanceButton así:

http://developer.android.com/reference/android/R.attr.html#textAppearanceButton

Es posible que desee intentar eso.

+1

yo no era consciente de ese atributo. Sin embargo, no tuvo ningún efecto. Por alguna razón, parece que el atributo textColor es ignorado por Button y las clases derivadas, cuando se proporcionan a través de un estilo. Solo tiene efecto cuando se establece sin un estilo. – jsmith

1

Para el caso de los botones, hay dos formas de definir el color del texto a través de los atributos: textColor y mediante un estilo definido por textAppearance.

El valor establecido por textColor (que está establecido por el estilo predeterminado) anulará cualquier valor de color de texto establecido por el estilo textAppearance. Por lo tanto, debe establecer el atributo textColor en @null de una de dos formas.

  • Establecer la textColor a @null en el estilo:

    <style name="Application.Button"> 
        <item name="android:textAppearance">@style/Application.Text.Medium.White</item> 
        <item name="android:textColor">@null</item> 
    </style> 
    
    <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        style="@style/Application.Button" /> 
    
  • Ajuste el textColor a @null en el botón XML:

    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="@style/Application.Button" 
    android:textColor="@null" /> 
    
Cuestiones relacionadas