2013-06-20 6 views
7

मैं टेक्स्ट व्यू का पृष्ठभूमि रंग कैसे प्राप्त करूं?मैं टेक्स्ट व्यू का पृष्ठभूमि रंग कैसे प्राप्त करूं?

जब मैं टेक्स्ट व्यू दबाता हूं, तो मैं उपयोग में आने वाले पृष्ठभूमि रंग के अनुसार पृष्ठभूमि रंग बदलना चाहता हूं।

getBackgroundResource() 

संपादित करें::

TextView जैसे एक विधि नहीं है मैं पृष्ठभूमि रंग की Resid पाने के लिए पसंद करेंगे।

+0

या मैं इंटरनेट के माध्यम से थोड़ा खोज रहा हूं लेकिन ऐसा लगता है कि इस तरह के आईडी को एक्सएमएल परिभाषित रंग से प्राप्त करने का कोई तरीका नहीं है। शायद आपको अपने ऐप को बदलना चाहिए और प्रोग्रामिक रूप से पृष्ठभूमि रंगों को प्रबंधित करना चाहिए, शायद ऑनक्लिक घटनाओं के दौरान रंग परिवर्तनों का पता लगाना। – Rob013

उत्तर

13

आप पृष्ठभूमि का रंग कोड प्राप्त करना चाहते हैं इस प्रयास करें:

if (textView.getBackground() instanceof ColorDrawable) { 
    ColorDrawable cd = (ColorDrawable) textView.getBackground(); 
    int colorCode = cd.getColor(); 
} 
+0

मैं अपना प्रश्न संपादित करता हूं: मैं रंग के resId से कैसे मिलता हूं? – OrSmolnik

+0

ठीक है अब मैं जवाब संपादित करूँगा –

+0

मैंने कोशिश की, लेकिन आपके उत्तर में पहली पंक्ति के बाद मुझे सीडी शून्य है – OrSmolnik

0

उत्तर:

हम नहीं कर सकते color.red या color.white तरह consts का उपयोग करें।

हम इसे लगाने की कैसे

int intID = (ColorDrawable) holder.tvChoose.getBackground().getColor(); 

यह प्रतिनिधित्व की जरूरत है और हम रंग की नकली आईडी है

0

ColorDrawable.getColor() केवल 11 से ऊपर एपीआई स्तर के साथ काम करेंगे तो आप इस कोड का उपयोग कर सकते हैं शुरुआत से इसका समर्थन करने के लिए। मैं एपीआई स्तर से नीचे प्रतिबिंब का उपयोग कर रहा 11.

public static int getBackgroundColor(TextView textView) { 
     Drawable drawable = textView.getBackground(); 
     if (drawable instanceof ColorDrawable) { 
      ColorDrawable colorDrawable = (ColorDrawable) drawable; 
      if (Build.VERSION.SDK_INT >= 11) { 
       return colorDrawable.getColor(); 
      } 
      try { 
       Field field = colorDrawable.getClass().getDeclaredField("mState"); 
       field.setAccessible(true); 
       Object object = field.get(colorDrawable); 
       field = object.getClass().getDeclaredField("mUseColor"); 
       field.setAccessible(true); 
       return field.getInt(object); 
      } catch (NoSuchFieldException e) { 
       e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } 
     } 
     return 0; 
    } 
0

आप AppCompat उपयोग उपयोग कर रहे हैं इस:

ViewCompat.getBackgroundTintList(textView).getDefaultColor(); 

साइड नोट: यह क्योंकि, अगर आप ColorDrawable लिए डाली सावधान रहना ClassCastException: android.graphics.drawable.RippleDrawable cannot be cast to android.graphics.drawable.ColorDrawable फेंक सकते हैं।

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