2010-11-02 21 views
5

मैंने अपने ऐप को एक वास्तविक फोन में स्थापित किया है, और भले ही एम्यूलेटर में वरीयताओं के सभी ग्रंथ एक ही रंग में दिखाई देते हैं, असली फोन में रंग अलग होता है (कुछ प्रकार का नीला ... लेकिन मुझे लगता है कि यह फोन के मॉडल पर निर्भर करता है)।एंड्रॉइड प्राथमिकताएं सारांश डिफ़ॉल्ट रंग?

मैं इस रंग को अपने कस्टम वरीयता घटक में कैसे सेट कर सकता हूं? (मैंने अपनी खुद की तलाश बार लागू की है, और इसका सारांश पाठ रंग अन्य सभी घटकों के पाठ रंग से अलग है ...)।

धन्यवाद!

+0

क्या रंग ressources ठीक है? : http://developer.android.com/guide/topics/resources/providing-resources.html – ykatchou

+0

हमने टेक्स्ट का रंग एंड्रॉइड.R.color.white पर सेट करने का प्रयास किया है; उदाहरण के लिए लेकिन यह सिर्फ काला हो जाता है। – Jason

+0

क्या आपने एंड्रॉइड.R.color संसाधन से कुछ और करने की कोशिश की है। यह बेवकूफ होगा, लेकिन निर्माता उन मानों को बदल सकते हैं ... और यह डिवाइस पर स्थापित हर ऐप को प्रभावित करेगा। शायद एक कस्टम मान जैसे कि # एफएफएफ आज़माएं। – grattemedi

उत्तर

2

मैंने पाया इन: android:textAppearance="?android:attr/textAppearanceLarge" और android:textAppearance="?android:attr/textAppearanceSmall" चाल करने के लिए लग रहे हैं ।

1

मुझे नहीं लगता कि यह संभव है। मैं पृष्ठभूमि रंग और शीर्षक टेक्स्ट रंग बदलने में सक्षम हूं, लेकिन सारांश रंग नहीं।

पृष्ठभूमि:

getListView().setBackgroundColor(Color.TRANSPARENT); 

शीर्षक पाठ:

Preference yourpreference = findPreference("yourpreference"); 
TextView tv = (TextView)yourpreference.getView(null, getListView()); 
tv.setTextColor(...); 

खेद है कि मैं और अधिक मदद नहीं कर सकता है ...

+1

मैं सारांश का रंग बदल सकता हूं, हालांकि मैं यह नहीं समझ सकता कि इसे सिस्टम रंग से कैसे मिलान किया जाए, उदाहरण के लिए मेरी आकाशगंगा के फोन में वरीयताओं के लिए अलग-अलग सिस्टम रंग हैं, अन्य फोन – Jason

+0

जेसन; आप वरीयता रंग कैसे बदलते हैं? – Emmanuel

2

सैमसंग गैलेक्सी एस फोन के सारांश पंक्ति के लिए निर्दिष्ट पाठ रंग के साथ अपना खुद का वरीयता लेआउट है। हालांकि एक TextAppearance.Small को पाठ निर्दिष्ट किया गया है लेआउट का रंग गुण टेक्स्ट उपस्थिति को ओवरराइड कर रहा है।

4
Preference pUpdate = findPreference("sys_setting_update"); 
pUpdate.setSummary(Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>")); 

उपयोग Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>") setSummary

3

को मैं डिफ़ॉल्ट एंड्रॉयड डिवाइस अपने आवेदन में चल रहा है द्वारा प्रयोग किया जाता रंग को पुन: प्राप्त करने के लिए एक तरीका खोज निकाला है। यह थोड़ा मुश्किल है और 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()); 
     }   
    } 
} 

यह वास्तव में सैमसंग गैलेक्सी एस तहत काम करता है मैं भी परीक्षण किया है कि यह एमुलेटर के तहत कुछ भी नष्ट नहीं होती है।

+0

आपके कोड ने मुझे सारांश के पाठ रंग को बदलने के लिए बाइंडव्यू() पर उपयोग करने में मदद की, जिसे मैं आईसीएस में ListPreference के लिए स्पैन करने योग्य स्ट्रिंग के साथ निष्पादित नहीं कर सका। – Tomcat

0

मुझे एक ही समस्या थी और मैं अपनी कस्टम खोजबार-वरीयता की शैली के साथ प्रयोग कर रहा हूं। अंत में seekBarPreference.java की onCreateView विधि में इन पंक्तियों के डिफ़ॉल्ट पाठ रंग के साथ वरीयता के सारांश दिखाएगा:

TextView summaryText = new TextView(getContext()); 
summaryText.setText(getSummary()); 
summaryText.setTextAppearance(getContext(), android.R.style.TextAppearance_Small); 

मैं preference_screen.xml पर इसका इस्तेमाल:

<com.asdasf.SeekBarPreferencias 
     android:key="@string/pref_seekBar_distance_key" 
     android:id="@+id/mySeekBarPreference" 
     android:title="@string/pref_seekBar_distance_title" 
     android:summary="@string/pref_seekBar_distance_summary"   
     android:max="50" 
     android:defaultValue="12" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

मुझे आशा है कि यह उपयोगी होगा ... (और मेरे पास है अच्छी तरह से मेरा पहला जवाब लिखा) सम्मान!