2016-09-29 2 views
1

Comment changer la couleur de toggleButton dans la listeView?Changer la couleur de toggleButton

Voilà comment je daignai mon toggleButton

<ToggleButton 
      android:id="@+id/donePic" 
      android:layout_width="30dp" 
      android:layout_marginLeft="270dp" 
      android:layout_height="30dp" 
      android:background="@drawable/selector" 
      android:focusable="false" 
      android:focusableInTouchMode="false" 
      android:textOff="" 
      android:textOn=""/> 

sélecteur

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- When selected, use tic --> 
    <item android:drawable="@mipmap/done" 
     android:state_checked="true" > 
     <solid 
      android:color="@color/red" /> 
    </item> 
    <!-- When not selected, use un tic--> 
    <item android:drawable="@mipmap/done" 
     android:state_checked="false"> 
     <solid 
      android:color="@color/green" /> 
    </item> 

</selector> 

MyActivity

public View getView(int position, View convertView, ViewGroup parent) { // inside adapter class 
     ViewHolder holder; 
     ToggleButton toggle; 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.item_to_do, null); 
      toggle =(ToggleButton)convertView.findViewById(R.id.donePic); 
      toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        if (isChecked) { 
         Log.e("A","a"); 
        } else { 
         // The toggle is disabled 
        } 
       } 
      }); 
      convertView.setTag(holder); 
     } 
     holder = (ViewHolder) convertView.getTag(); 
     return convertView; 
    } 

Il affiche log lorsque vous cliquez sur toggleButton, mais la couleur reste blanche (sa couleur d'origine). Comment puis-je changer la couleur de toggleButton?

Mise à jour

Je mis à jour mon code, mais la couleur reste toujours blanche! Je veux utiliser le done.png et je l'ai placé à res/drawable/done.png.

sélecteur

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- When selected, use tic --> 
    <item android:drawable="@drawable/toggle_on" 
     android:state_checked="true" > 
    </item> 
    <!-- When not selected, use un tic--> 
    <item android:drawable="@drawable/toggle_off" 
     android:state_checked="false"> 
    </item> 

</selector> 

toggle_on

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/done" 
     android:state_checked="true"> 
     <solid 
      android:color="@color/green" /> 
    </item> 
</selector> 

toggle_off

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/done" 
     android:state_checked="false"> 
     <solid 
      android:color="@color/red" /> 
    </item> 
</selector> 
+0

** 1 ** - Ce '

+0

@Rotwang 'android: teinte' ne peut pas être utilisé dans ** selector **? – John

+0

l'attribut 'android: tint' ne fonctionne pas sur tous les niveaux d'API. –

Répondre

3

essayer cette façon.

ToggleButton:

<ToggleButton 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:textOn="On" 
    android:textOff="Off" 
    android:textSize="20sp" 
    android:background="@drawable/toggle_day_bg_selector" /> 

toggle_day_bg_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:drawable="@drawable/toggle_off" 
     android:state_checked="false"/> 
    <item android:drawable="@drawable/toggle_on" 
     android:state_checked="true"/> 
</selector> 

toggle_on.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval" 
    > 
    <solid android:color="@color/red" /> 

</shape> 

toggle_off.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <solid android:color="@color/green" /> 

</shape> 

Espérons que cela aidera.

EDIT:

utiliser ce fichiers étirables pour montrer des images sur ToggleButton

toggle_off.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval" > 
      <solid android:color="@android:color/holo_green_dark" /> 
     </shape> 
    </item> 
    <item android:drawable="@drawable/ic_launcher"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval" > 
      <solid android:color="@android:color/holo_green_dark" /> 
     </shape> 
    </item> 

</layer-list> 

toggle_on.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval" > 
      <solid android:color="@android:color/holo_red_dark" /> 
     </shape> 
    </item> 
    <item android:drawable="@drawable/ic_launcher"> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval" > 
      <solid android:color="@android:color/holo_red_dark" /> 
     </shape> 
    </item> 

</layer-list> 

heureux de codage ..

+0

Est-ce que cela me donnera un tick togglebutton? – John

+0

vous pouvez modifier le fichier de forme selon vos besoins. vous pouvez envelopper '' à l'intérieur de '' dans 'layer-list'. je ne suis pas sûre à propos de ça. Je ne l'ai pas encore testé. –

+0

vérifier ma mise à jour post. Merci – John