2010-08-16 9 views
6

एक संवाद में एंड्रॉइड में चेकमार्क रंग का रंग कैसे अनुकूलित करें। वर्तमान में, डिफ़ॉल्ट रूप से, चेकमार्क का रंग डिफ़ॉल्ट रूप से हरा होता है। मैं इसे पसंद के एक अलग रंग में अनुकूलित करना चाहता हूंएक संवाद में एंड्रॉइड में चेकमार्क रंग के रंग को कैसे अनुकूलित करें। : एंड्रॉइड

उत्तर

6

आप styles.xml from android system को देखें, तो आपको लगता है कि चेकबॉक्स शैली इस प्रकार परिभाषित किया गया है देखेंगे गाइड है:

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

और आप के संसाधनों की खोज करते हैं सिस्टम, आप देखेंगे कि btn_check चेक रंगीन हरे रंग के साथ 2 राज्यों (चालू/बंद) के साथ एक खींचने योग्य चयनकर्ता है।
तो अगर आप अपने खुद के रंग drawable करना चाहते हैं, यहाँ आप क्या करना चाहिए है:
- परिभाषित 2 ड्रॉएबल उपयोग करने के लिए
- - एक्सएमएल फ़ाइल बनाने के चयनकर्ता

समर्थन एक styles.xml
बनाने

आप पूर्ण प्रलेखन काफी the android google doc.

+0

हाय, मैं अभी भी समाधान को लागू करने में सफल नहीं हो सका। – Karthik

+0

क्या आप कृपया इसके बारे में थोड़ी अधिक जानकारी के साथ मेरी मदद कर सकते हैं। मैंने इसके लिए एक नमूना जावा फ़ाइल चिपका दी है। कृपया मेरी मदद करें कि मेरे चेकबॉक्स रंग को लाल रंग के बजाय किसी अन्य रंग में बदलने के लिए मुझे क्या करना है। – Karthik

+0

AlertDialog.Builder checkbox_dialog = नए AlertDialog.Builder ( \t \t \t \t \t DialogCheckBox.this); \t checkbox_dialog.setTitle ("मुख्य शीर्षक यहां जाता है"); \t \t \t \t \t चेकबॉक्स_डिअलॉग।setMultiChoiceItems (myitems, choiceitems, \t \t \t \t \t नई DialogInterface.OnMultiChoiceClickListener() { \t \t \t \t \t \t सार्वजनिक शून्य onClick (DialogInterface संवाद, पूर्णांक जो, \t \t \t \t \t \t \t \t बूलियन isChecked) { \t \t \t \t \t लॉग.d ("टैग", "आइटम चुने जा रहे हैं"); \t \t \t \t \t \t} \t \t \t \t \t}); – Karthik

1

पर detailled एक बहु विकल्प संवाद अंदर चेकबॉक्स को बदलने के लिए मिल सकता है, आप अपने संवाद के लिए एक कस्टम एडाप्टर की आवश्यकता इतनी के रूप में सूची के विचारों के लिए उपयोग किया है। फिर, आप क्लास चेकडटेक्स्ट व्यू के विधि setCheckMarkDrawable पर कॉल करें।

Alert dialog with custom checkboxes

फ़ाइल default_checkbox.xml अंदर 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> 

फ़ाइल 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; 
     } 
    } 
} 

नोट::

यहाँ एक उदाहरण है यदि आप AlertDialog का उपयोग करते हैं, तो ListView प्राप्त करने से पहले, आप show पर कॉल करें, सबसे पहले, ऊपर वर्णित की तरह।

हालांकि, यदि आप DialogFragment और onCreateDialog का उपयोग करते हैं, तो आपको onStart के अंदर ListView मिलता है।

संबंधित मुद्दे