को मैं डिफ़ॉल्ट एंड्रॉयड डिवाइस अपने आवेदन में चल रहा है द्वारा प्रयोग किया जाता रंग को पुन: प्राप्त करने के लिए एक तरीका खोज निकाला है। यह थोड़ा मुश्किल है और requieres है कि आप रंग से किया जा रहा पुनः प्राप्त आपकी गतिविधि के किसी अन्य वरीयता सारांश दृश्य से दिखाया गया है और इसे रनटाइम में संग्रहीत करता है।
फिर आप अन्य प्राथमिकताओं के अन्य दृश्यों में एक ही रंग कोड का उपयोग कर सकते हैं, यह सुनिश्चित करते हुए कि आपको हमेशा वही रंग कोड एंड्रॉइड मानक प्राथमिकताओं को सौंपा जाएगा। यहां बताया गया है कि मैंने यह कैसे किया:
मेरी वरीयताओं की गतिविधि में एक सामान्य चेकबॉक्स प्राथमिकता है जिसका उपयोग मैं सेवा को सक्रिय या निष्क्रिय करने के लिए करता हूं। इस प्रकार मैं CheckBoxPreference विस्तार किया है, इसलिए मेरे विस्तार rutime में पुन: प्राप्त करता डिफ़ॉल्ट रंग एंड्रॉयड अंत में है कि CheckBoxPreference का सारांश को दे दिया:
public class MyCheckBoxPreference extends android.preference.CheckBoxPreference {
private static int sSummaryColor = Color.WHITE;
private static boolean sInitialized = false;
public MyCheckBoxPreference(Context context) {
super(context);
}
public MyCheckBoxPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onBindView(View view) {
super.onBindView(view);
if (!sInitialized) {
sSummaryColor = getSummaryColor(view);
sInitialized = true;
}
}
private int getSummaryColor(View view) {
int color = Color.WHITE;
// Gets the color android gave to the summary by default
TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
if (summaryView != null) {
ColorStateList list = summaryView.getTextColors();
if (list != null) {
color = list.getDefaultColor();
}
}
return color;
}
public static int getSummaryColor() {
return sSummaryColor;
}
}
मेरी preferences.xml में मैं सिर्फ CheckBoxPreference के बजाय MyCheckBoxPreference के रूप में है कि वरीयता का दृष्टांत:
<org.yourpackage.MyCheckBoxPreference
android:title="@string/preference_title_activate"
android:defaultValue="false"
android:summary="@string/preference_summary_activate_off"
android:summaryOff="@string/preference_summary_activate_off"
android:key="preference_activate">
</org.yourpackage.MyCheckBoxPreference>
MyCheckBoxPreference MyCheckBoxPreference.getSummaryColor साथ सारांश रंग पुन: प्राप्त करने से पहले एक बार instantiated हो गया है()।
अब आप onBindView (देखें) से अन्य अनुकूलित वरीयताओं के रंग सेट कर सकते हैं:
public class MyCustmizedPreference extends Preference {
public MyCustmizedPreference (Context context) {
super(context);
setLayoutResource(R.layout.my_customized_preference);
}
@Override
public void onBindView(View view) {
super.onBindView(view);
TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
if (summaryView != null) {
summaryView.setTextColor(MyCheckBoxPreference.getSummaryColor());
}
}
}
यह वास्तव में सैमसंग गैलेक्सी एस तहत काम करता है मैं भी परीक्षण किया है कि यह एमुलेटर के तहत कुछ भी नष्ट नहीं होती है।
क्या रंग ressources ठीक है? : http://developer.android.com/guide/topics/resources/providing-resources.html – ykatchou
हमने टेक्स्ट का रंग एंड्रॉइड.R.color.white पर सेट करने का प्रयास किया है; उदाहरण के लिए लेकिन यह सिर्फ काला हो जाता है। – Jason
क्या आपने एंड्रॉइड.R.color संसाधन से कुछ और करने की कोशिश की है। यह बेवकूफ होगा, लेकिन निर्माता उन मानों को बदल सकते हैं ... और यह डिवाइस पर स्थापित हर ऐप को प्रभावित करेगा। शायद एक कस्टम मान जैसे कि # एफएफएफ आज़माएं। – grattemedi