2011-10-13 11 views
5

Ho alcuni problemi nella gestione dell'elenco stato Android per un pulsante. Ho specificato alcuni elementi Drwable di forma per stati diversi, ma ho anche bisogno di cambiare textColor a seconda dello stato corrente.Android - Come combinare Shape drwable e il colore del testo in stati diversi per il pulsante?

mia attuale lista di stato xml è:

<?xml version="1.0" encoding="utf-8"?>  
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
     <shape> 
      <gradient 
       android:startColor="@color/white" 
       android:endColor="@color/light_gray" 
       android:angle="270" /> 
      <stroke 
       android:width="3dp" 
       android:color="@color/classic_red1" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 

    <item> 
     <shape> 
      <gradient 
       android:startColor="@color/classic_red1" 
       android:endColor="@color/classic_red2" 
       android:angle="270" /> 
      <stroke 
       android:width="2dp" 
       android:color="@color/white" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

ho anche bisogno di cambiare textColor sulla base di questi 2 Stati. Grazie in anticipo.

risposta

24

selettore per il pulsante BG:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
    <shape> 
     <gradient 
      android:startColor="@color/white" 
      android:endColor="@color/light_gray" 
      android:angle="270" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/classic_red1" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 

</item> 

<item android:state_focused="true"> 
    <shape> 
     <solid android:color="#424242" /> //another custom shape here for focus state 
    </shape> 
</item> 

<item> 
    <shape> 
     <gradient 
      android:startColor="@color/classic_red1" 
      android:endColor="@color/classic_red2" 
      android:angle="270" /> 
     <stroke 
      android:width="2dp" 
      android:color="@color/white" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 

</item> 

selettore per il colore del testo tasto:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:color="@color/white" /> <!-- pressed --> 
    <item android:color="@color/black" /> <!-- default/unchecked --> 
</selector> 
+0

Aaargh !! Che pazzo .. Ho pensato di dover mettere tutto in background la risorsa disegnabile. Grazie molto! –

+0

Prego! :) – androidu

+0

e il selettore BG è un xml sotto la directory drawable, dove il colore del testo è un xml sotto la directory dei colori - vedere http://stackoverflow.com/questions/8743584/how-to-set-the-text in stile-di-un-pulsante di selettori-in- – jobwat

Problemi correlati