2010-08-16 7 views

Répondre

6

Si vous regardez le styles.xml from android system, vous verrez que le style de case à cocher est définie comme suit:

<style name="Widget.CompoundButton.CheckBox"> 
    <item name="android:background">@android:drawable/btn_check_label_background</item> 
    <item name="android:button">@android:drawable/btn_check</item> 
</style> 

Et si vous recherchez les ressources du système, vous verrez que btn_check est un sélecteur drawable avec 2 états (on/off) avec le chèque coloré en vert ou pas.
Donc, si vous voulez avoir votre propre couleur thermoformable, voici ce que vous devez faire:
- créer un styles.xml
- définissent les 2 dessinables à utiliser
- créer le fichier XML supportant le sélecteur

vous trouverez la documentation complète très détaillée sur the android google doc.

+0

Salut, je ne pouvais toujours pas réussir à implémenter la solution. – Karthik

+0

Pouvez-vous s'il vous plaît m'aider avec un peu plus d'informations concernant la même chose. J'ai collé un exemple de fichier Java pour le même. S'il vous plaît aidez-moi ce que exactky je dois faire pour avoir ma couleur de case à cocher pour être changé en une autre couleur au lieu de rouge. – Karthik

+0

AlertDialog.Builder checkbox_dialog = new AlertDialog.Builder ( \t \t \t \t \t DialogCheckBox.this); \t checkbox_dialog.setTitle ("Le titre principal va ici"); \t \t \t \t \t \t checkbox_dialog.setMultiChoiceItems (myitems, choiceitems, \t \t \t \t \t nouvelle DialogInterface.OnMultiChoiceClickListener() { \t \t \t \t \t \t public void onClick (dialogue DialogInterface, int qui, \t \t \t \t \t \t \t \t isChecked Boolean) { \t \t \t \t \t \t \t Log.d ("TAG", "éléments sélectionnés"); \t \t \t \t \t \t} \t \t \t \t \t}); – Karthik

1

pour changer la case à cocher dans une boîte de dialogue à choix multiples, vous avez besoin d'un adaptateur pour votre dialogue, afin d'avoir accès aux vues de la liste. Ensuite, vous appelez la méthode setCheckMarkDrawable de la classe CheckedTextView.

Voici un exemple:

Alert dialog with custom checkboxes

fichier default_checkbox.xml intérieur res/drawable

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

    <item android:state_checked="true" 
     android:drawable="@drawable/checkbox_checked" /> <!-- checked --> 

    <item android:state_pressed="true" 
     android:drawable="@drawable/checkbox_checked" /> <!-- pressed --> 

    <item android:drawable="@drawable/checkbox_default" /> <!-- default --> 

</selector> 

Fichier DialogUtil.java

package example.dialog; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.util.Log; 
import android.view.*; 
import android.widget.*; 
import android.widget.AdapterView.OnItemClickListener; 

public class DialogUtil { 

    private DialogUtil() { 
    } 

    public static AlertDialog show(Context context) { 
     String[] items = {"text 1", "text 2", "text 3"}; 
     AlertDialog.Builder builder = new AlertDialog.Builder(context); 
     builder.setTitle("Test") 
      .setPositiveButton("OK", null) 
      .setAdapter(new CustomAdapter(context, items), null); 
     AlertDialog dialog = builder.show(); 

     ListView list = dialog.getListView(); 
     list.setItemsCanFocus(false); 
     list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     list.setOnItemClickListener(listener); 
     return dialog; 
    } 

    private static OnItemClickListener listener = new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Log.i("DialogUtil", "Clicked on " + view); 
     } 
    }; 

    private static class CustomAdapter extends ArrayAdapter<String> { 

     public CustomAdapter(Context context, String[] array) { 
      super(context, android.R.layout.simple_list_item_multiple_choice, array); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = super.getView(position, convertView, parent); 
      if (view instanceof CheckedTextView) { 
       CheckedTextView checkedView = (CheckedTextView) view; 
       checkedView.setCheckMarkDrawable(R.drawable.default_checkbox); 
      } 
      return view; 
     } 
    } 
} 

REMARQUE: Si vous utilisez simplement AlertDialog, puis avant d'obtenir le ListView, vous appelez show, d'abord, comme expliqué ci-dessus. Toutefois, si vous utilisez DialogFragment et onCreateDialog, vous obtenez le ListView, à l'intérieur onStart.

Questions connexes