2010-10-23 7 views
21

मेरी वरीयता स्क्रीन पर मुझे एक वरीयता है कि जब क्लिक किया गया तो रंग पिकर संवाद खुलता है। मैं क्या करना चाहता हूं जब उपयोगकर्ता रंग चुनता है, कि वरीयता का टेक्स्ट सारांश उस रंग में प्रदर्शित होता है।मैं एंड्रॉइड वरीयता सारांश पाठ रंग कैसे सेट कर सकता हूं?

मुझे पता है कि इस तरह सारांश स्थापित हो सकता है, Currently <font color="#ff0000">this color</font> और इसे उस रंग में प्रदर्शित करें। समस्या वह रंग है जो मैं वापस प्राप्त कर रहा हूं एंड्रॉइड int रंग है।

मैं लाल(), हरे(), नीले() विधियों का उपयोग कर सकता हूं और फिर उन्हें हेक्स में परिवर्तित कर सकता हूं और फिर उन्हें एक स्ट्रिंग में जोड़ सकता हूं ताकि मैं सारांश टेक्स्ट को नए मान के साथ सेट कर सकूं और यह काम करता है: String colorString = String.format("#%02x%02x%02x",Color.red(defaultColor), Color.green(defaultColor), Color.blue(defaultColor)); I अगर ऐसा करने का कोई आसान तरीका है तो बस उत्सुक था।

समय से पहले धन्यवाद।

शॉन

उत्तर

31

ठीक है कि मैं क्या एक Spannable उपयोग कर रहा था कर समाप्त हो गया:

एंड्रॉयड के HTML देखने के लिए इस लिंक का पालन करें। यह रंग को एक पूर्णांक के रूप में लेता है। अपने पाठ शैली

private void setColorPreferencesTitle(EditTextPreference textPref, int color) { 
    CharSequence cs  = (CharSequence) textPref.getTitle(); 
    String plainTitle = cs.subSequence(0, cs.length()).toString(); 
    Spannable coloredTitle = new SpannableString (plainTitle); 
    coloredTitle.setSpan(new ForegroundColorSpan(color), 0, coloredTitle.length(), 0); 
    textPref.setTitle(coloredTitle); 
} 

private void resetColorPreferencesTitle(EditTextPreference textPref) { 
    CharSequence cs  = (CharSequence) textPref.getTitle(); 
    String plainTitle = cs.subSequence(0, cs.length()).toString(); 
    textPref.setTitle(plainTitle); 
} 
+0

बहुत बहुत धन्यवाद !! यह एक बेकार ढंग से काम करता है – berlindev

-1

हाय आप() वरीयता के रंग Html.fromHtml का उपयोग कर बदल सकते हैं।

पूर्व: निजी स्ट्रिंग शीर्षक = "" + "एसएमएस भेजें सीमा भेजें" + "";

और इस स्ट्रिंग को अपने एंड्रॉइड एप्लिकेशन से इस तरह सेट करें।

चेकबॉक्स प्रस्तुति _test = (चेकबॉक्स प्रेफर) ढूंढें प्राथमिकता ("पाठ"); _test .setTitle (Html.fromHtml (शीर्षक)); http://www.androidpeople.com/tag/html-tags/

धन्यवाद

+2

मुझे इसके बारे में पता है। हालांकि, जैसा कि मैंने उपरोक्त कहा है, मेरे पास एक int के रूप में रंग तक पहुंच है, यह है कि एंड्रॉइड इसे कैसे स्टोर करता है। आरजीबी या एआरजीबी तार नहीं। – Sean

2

एक थोड़ी देर हो चुकी है, लेकिन मैं इन संयमी तरीकों लिखने के लिए उपयोगी पाया।

mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" + mPodFolderPref.getTitle() + "</font>")); 
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" + mPodFolderPref.getSummary() + "</font>")); 

Html.fromHtml आपके लिए बहुत कुछ कर सकता है।

3

उपयोग Html.fromHtml:

Spannable summary = new SpannableString("Currently This Color"); 
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0); 
preference.setSummary(summary); 
+0

यह सुनिश्चित नहीं है कि इसे क्यों कम किया जा रहा है लेकिन यह सवाल का सबसे आसान जवाब है और इसे लागू करने के लिए सबसे आसान है। – Mendhak

+0

.fromHtml-solution आपको पाठ को बोल्ड करने के लिए केवल जैसे टेक्स्टकलर से अधिक विशेषताओं को बदलने की अनुमति देता है। इसलिए, यह मेरे लिए बहुत अधिक मूल्यवान उत्तर है। Upvoted। – MojioMS

+0

इसकी कमी हुई। – Yetti99

1

सभी उपरोक्त तरीकों से मेरी मदद नहीं हुई। मैं प्रीफेर्न्स क्लास बढ़ाता हूं:

public class CustomListPreferences extends Preference { 

    public CustomListPreferences(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomListPreferences(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onBindView(View view) { 
     super.onBindView(view); 
     ((TextView)view.findViewById(android.R.id.summary)).setTextColor(getContext().get Resources().getColor(R.color.green)); 
    } 

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