2011-12-22 19 views
5

से एक संपादन टेक्स्ट का 'डिफ़ॉल्ट' रंग मान प्राप्त करें मेरे पास Activity है जिसमें 3.1 पर EditText है। उपयोगकर्ता इनपुट के आधार पर, मैं संपादन टेक्स्ट (एक त्रुटि के लिए लाल) में टेक्स्ट का रंग बदलता हूं, और फिर पाठ ठीक होने पर इसे काले रंग में रीसेट कर देता है।थीम

एक मुद्दा गतिविधि के समग्र विषय को बदलने से संबंधित है। उदाहरण के लिए, इसे ब्लैक टेक्स्ट के काले रंग की पृष्ठभूमि के साथ दिखाए जाने वाले हल्के विषय के परिणामों से नियमित अंधेरे विषय में बदलना - इसलिए मुझे डेटा में ठीक होने पर टेक्स्ट को सफेद में रीसेट करने की बजाय कोड में जाना और बदलना होगा।

अगर मैं गतिविधि में विषय बदलता हूं तो इस कोड को बदलने के बजाय, मैं सोच रहा था कि किसी दिए गए थीम के लिए डिफ़ॉल्ट संपादन टेक्स्ट टेक्स्ट को खींचने का कोई तरीका प्रोग्राम प्रोग्रामिक रूप से खींचने का कोई तरीका था, तो मैं बस टेक्स्ट को वापस कर सकता हूं सफेद, काले, आदि में हार्ड-कोडिंग के बजाय डिफ़ॉल्ट रंग में

उत्तर

8

R.attr का उपयोग करें। यदि आप उन्हें रंग बदलने से पहले पुनः प्राप्त

setTextColor(android.R.attr.editTextColor) 
+0

यह अच्छा है, लेकिन केवल हनीकॉम के लिए और आगे – Panthro

+1

इस जवाब में विशेषता को हल नहीं किया जाना चाहिए? http://stackoverflow.com/a/23543990/1245231 – petrsyn

4

EditText.getCurrentTextColor() और EditText.getTextColors() भी डिफ़ॉल्ट रंग प्रदान करेगा। इसके अतिरिक्त इस दृष्टिकोण को प्री 3.0 का उपयोग किया जा सकता है जो एंड्रॉइड.आर.एटआर.एडिटिट टेक्स्टकॉलर का उपयोग करते समय संभव नहीं है।

7

Theme's docs के अनुसार obtainStyledAttributes का उपयोग कर सीधे रंग प्राप्त करें।

TypedArray themeArray = context.getTheme().obtainStyledAttributes(new int[] {android.R.attr.editTextColor}); 
try { 
    int index = 0; 
    int defaultColourValue = 0; 
    int editTextColour = themeArray.getColor(index, defaultColourValue); 
} 
finally 
{ 
    // Calling recycle() is important. Especially if you use alot of TypedArrays 
    // http://stackoverflow.com/a/13805641/8524 
    themeArray.recycle(); 
} 
+1

इसके साथ किए जाने के बाद अपने टाइप किए गए ऐरे पर 'रीसायकल()' को कॉल करना न भूलें। – iamreptar

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