2011-10-13 21 views
5

Android State List'i bir düğme için yönetirken bazı sıkıntılarım var. Farklı durumlar için bazı Shape drwable öğelerini belirledim, ancak mevcut duruma bağlı olarak textColor'u da değiştirmem gerekiyor.Android - Düğme için şekil drwable ve metin renkleri farklı durumları nasıl birleştiriyor?

Benim asıl devlet liste xml geçerli:

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

Bunları 2 durumlarına dayanarak textColor değiştirmek için de gereklidir. Şimdiden teşekkürler. düğme BG için

cevap

24

seçici: düğmesi metin rengi için

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

seçici:

<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 !! Ne aptal .. Arka plan çekilebilir kaynağına hepsini koymak zorunda düşündüm. Çok teşekkürler! –

+0

Rica ederim! :) – androidu

+0

ve BG seçicisi, bir çizge dizininin altında bir xml'dir, burada renk rengi bir renk dizininin altında bir xml'dir - bkz. Http://stackoverflow.com/questions/8743584/how-to-set-the-text tarzı-of-a-düğme-in-seçicileri – jobwat

İlgili konular