2010-07-30 25 views
15

मैं अभी एक ऐप पर काम कर रहा हूं जो इसके भाग पर एक बाउंडिंग बॉक्स वाली छवि दिखाने के लिए उप-वर्गीकृत ImageView का उपयोग करता है।प्रोग्रामेटिक रूप से थीम रंग प्राप्त करें

अभी बॉक्स को पीले रंग में खींचा गया है, लेकिन मुझे लगता है कि अगर रंग सिस्टम के बटन दबाए गए रंग से मेल खाता है, जैसे कि ड्रॉइड के लिए नारंगी, ईवो के लिए हरा, या नीला गैलेक्सी एस

मैंने एपीआई के आसपास थोड़ा सा देखा, लेकिन उस रंग को प्रोग्रामेटिक रूप से नब करने का तरीका नहीं मिला। कोई विचार?

+0

यह एक अच्छा सवाल है और मैं कर रहा हूँ डर है कि कोई समाधान नहीं है। वास्तव में दुखी है। – mad

+0

इस प्रश्न के बाद से 5 साल हो गए हैं ... वर्तमान उत्तर अब यहां स्थित है: http://stackoverflow.com/questions/12375766/how-to-get-background- रंग-से-वर्तमान-थीम-प्रोग्रामेटिक रूप से (वह पहला जवाब निश्चित रूप से काम करता है ...) – pbarranis

उत्तर

7

आप android के themes.xml, styles.xml, और colors.xml से स्रोत पर देख सकते हैं। Color.xml से आप जो एक चीज देखते हैं वह यह है कि बहुत सारे रंग परिभाषित नहीं हैं। ऐसा इसलिए है क्योंकि अधिकांश विजेट 9-पैच फ़ाइलों के माध्यम से किए जाते हैं।

बटन शैली:

223  <style name="Widget.Button"> 
224   <item name="android:background">@android:drawable/btn_default</item> 
225   <item name="android:focusable">true</item> 
226   <item name="android:clickable">true</item> 
227   <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> 
228   <item name="android:textColor">@android:color/primary_text_light</item> 
229   <item name="android:gravity">center_vertical|center_horizontal</item> 
230  </style> 

काम पृष्ठभूमि रंग बदलने के लिए किए गए कार्य की सभी btn_defaultDrawable में किया जाता है।

btn_default.xml के स्रोत:

17 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    18  <item android:state_window_focused="false" android:state_enabled="true" 
    19   android:drawable="@drawable/btn_default_normal" /> 
    20  <item android:state_window_focused="false" android:state_enabled="false" 
    21   android:drawable="@drawable/btn_default_normal_disable" /> 
    22  <item android:state_pressed="true" 
    23   android:drawable="@drawable/btn_default_pressed" /> 
    24  <item android:state_focused="true" android:state_enabled="true" 
    25   android:drawable="@drawable/btn_default_selected" /> 
    26  <item android:state_enabled="true" 
    27   android:drawable="@drawable/btn_default_normal" /> 
    28  <item android:state_focused="true" 
    29   android:drawable="@drawable/btn_default_normal_disable_focused" /> 
    30  <item 
    31   android:drawable="@drawable/btn_default_normal_disable" /> 
    32 </selector> 

प्रत्येक उनमें से एक एक 9-पैच फ़ाइल है। समस्या यह है कि वे पीएनजी हैं। रंग छवि फ़ाइलों में बनाए गए हैं और कहीं भी परिभाषित नहीं हैं। जैसा कि आपने देखा है कि इन छवियों को प्रतिस्थापित किया जा सकता है और देखो बदलता है।

दुर्भाग्य से, आप जो चाहते हैं वह संभव नहीं है। आपको जाने के लिए एक रंग चुनना होगा। यह रंग शायद आपके शेष एप्लिकेशन के साथ फिट करने के लिए चुना जाना चाहिए। क्षमा करें :(

+0

वैसे यह निराशाजनक है। हालांकि धन्यवाद। – infinitypanda

1

चेक इस लिंक: Using Platform Styles and Themes

अगर उपवर्गीकरण इस मामले में तो सबसे अच्छा होगा है मैं नहीं जानता। मैं कोशिश करेंगे: उपवर्गीकरण की

  • उपयोग ImageButton बजाय।
  • बटन पर प्लेटफ़ॉर्म शैली जोड़ें।
+2

मैंने इसे पढ़ा, लेकिन यह सहायक नहीं था। यह मुझे बताता है कि थीम कैसे सेट करें, लेकिन मैं थीम प्राप्त करना चाहता हूं। और ImageButton वह नहीं है जिसे मैं ढूंढ रहा हूं, क्षमा करें। तस्वीर को क्लिक करने योग्य होने की आवश्यकता नहीं है, मैं सिर्फ एक बटन के रूप में एक ही रंग का उपयोग करना चाहता हूं। – infinitypanda

7

एंड्रॉयड ICE_CREAM_SANDWICH से (एपीआई 14), आप android.R.color में विषय रंग है *

उदाहरण के लिए,।

myTextView.setTextColor(getResources().getColor(android.R.color.holo_red_light)); 
+1

मेरी सीमित समझ में, एंड्रॉइड.R.color से कुछ उपलब्ध एक स्थिर रंग है और ऐप की थीम (रनटाइम पर परिवर्तनीय) से एक परिवर्तनीय रंग नहीं है। ऐसा करने का उत्तर यहां है: http://stackoverflow.com/questions/12375766/how-to-get-background-color-from-current-theme- प्रोग्रामेटिक रूप से – pbarranis

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