2010-08-16 6 views

Antwort

6

Wenn man sich die styles.xml from android system anschauen, werden Sie die Checkbox Stil definiert, dass sich wie folgt:

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

Und wenn Sie die Ressourcen der Suche System, Sie werden sehen, dass btn_check ist ein ziehbarer Selektor mit 2 Status (ein/aus) mit dem Scheck grün gefärbt oder nicht.
Also, wenn Sie Ihre eigene Farbe-ziehbar haben wollen, hier ist das, was Sie tun sollten:
- erstellen styles.xml
- definieren die 2 Drawables verwenden
- Unterstützung der Wähler die XML-Datei erstellen

Sie die vollständige Dokumentation ganz auf the android google doc. detaillierten finden

+0

Hallo, ich konnte immer noch nicht die Lösung implementieren. – Karthik

+0

Können Sie mir bitte mit ein bisschen mehr Informationen in Bezug auf die gleichen helfen. Ich habe eine Beispiel-Java-Datei für die gleiche eingefügt. Bitte helfen Sie mir, was genau ich tun muss, um meine Checkbox-Farbe in eine andere Farbe anstatt in rot zu ändern. – Karthik

+0

AlertDialog.Builder checkbox_dialog = new AlertDialog.Builder ( \t \t \t \t \t DialogCheckBox.this); \t checkbox_dialog.setTitle ("Haupttitel geht hier"); \t \t \t \t \t \t checkbox_dialog.setMultiChoiceItems (MyItems, choiceitems, \t \t \t \t \t neue DialogInterface.OnMultiChoiceClickListener() { \t \t \t \t \t \t public void onClick (DialogInterface Dialog, int die, \t \t \t \t \t \t \t \t boolean isChecked) { \t \t \t \t \t \t \t Log.d ("TAG", "Elemente werden ausgewählt"); \t \t \t \t \t \t} \t \t \t \t \t}); – Karthik

1

um das Kontrollkästchen in einem Multi-Choice-Dialog zu ändern, benötigen Sie einen benutzerdefinierten Adapter für Ihren Dialog, um den Zugang zu den Ansichten der Liste zu haben. Dann rufen Sie die Methode setCheckMarkDrawable der Klasse CheckedTextView. Hier

ein Beispiel:

Alert dialog with custom checkboxes

Datei default_checkbox.xml innen 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> 

Datei 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; 
     } 
    } 
} 

HINWEIS: Wenn Sie einfach AlertDialog verwenden, dann rufen Sie zuerst die ListViewshow, zuerst, wie oben erklärt.

Wenn Sie jedoch DialogFragment und onCreateDialog verwenden, dann erhalten Sie die ListView, innerhalb onStart.

Verwandte Themen