ColorStateList
एक ऐसा ऑब्जेक्ट है जिसे एक्सएमएल में परिभाषित किया जा सकता है. साथ ही, इसे ऐसे रंग के तौर पर लागू किया जा सकता है जो असल में कलर बदल देता हो
View
ऑब्जेक्ट की स्थिति
इस पर लागू होता है. उदाहरण के लिए, Button
विजेट इनमें से किसी भी स्थिति में हो सकता है: दबाया गया, फ़ोकस किया गया या कोई भी नहीं. कलर स्टेट लिस्ट का इस्तेमाल करके,
तो हर राज्य के लिए अलग रंग दिया जा सकता है.
एक्सएमएल फ़ाइल में, राज्यों की सूची के बारे में बताया गया हो. हर रंग को <item>
एलिमेंट में, एक <selector>
एलिमेंट में तय किया जाता है. हर <item>
अलग-अलग एट्रिब्यूट का इस्तेमाल करके, उस स्थिति के बारे में बताया जाता है जिसमें उसका इस्तेमाल किया जाता है.
हर स्थिति में बदलाव के दौरान, राज्य की सूची ऊपर से नीचे दिखाई जाती है. साथ ही, सूची में पहला आइटम जो
का इस्तेमाल किया गया है. यह विकल्प "सबसे अच्छे" के आधार पर नहीं है
मिलान होता है, बल्कि वह पहला आइटम होता है जो राज्य के न्यूनतम मानदंड को पूरा करता है.
ध्यान दें: अगर आपको स्टैटिक कलर रिसॉर्स देना है, तो किसी
सिंपल color की वैल्यू.
- फ़ाइल की जगह:
res/color/filename.xml
फ़ाइल नाम का इस्तेमाल, रिसॉर्स आईडी के तौर पर किया जाता है.
- कंपाइल किए गए संसाधन डेटा टाइप:
ColorStateList
के लिए रिसॉर्स पॉइंटर
- संसाधन का रेफ़रंस:
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Java में:
R.color.filename
एक्सएमएल में: @[package:]color/filename
- सिंटैक्स:
-
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:lStar="floating_point_value"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
- एलिमेंट:
-
<selector>
- ज़रूरी है. यह रूट एलिमेंट है. एक या ज़्यादा
<item>
एलिमेंट शामिल हैं.
विशेषताएं:
xmlns:android
- स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस के बारे में बताता है, जो
"http://schemas.android.com/apk/res/android"
.
<item>
- कुछ राज्यों के एट्रिब्यूट के हिसाब से इस्तेमाल किए जाने वाले रंग के बारे में बताता है. यह है
<selector>
एलिमेंट का चाइल्ड.
विशेषताएं:
android:color
- हेक्साडेक्सिमल रंग. ज़रूरी है. रंग इससे तय होता है कि
आरजीबी मान और वैकल्पिक ऐल्फ़ा चैनल.
वैल्यू हमेशा पाउंड (#
) वर्ण से शुरू होती है. इसके बाद,
नीचे दिए गए किसी एक फ़ॉर्मैट में, अल्फ़ा-लाल-हरे-नीले रंग की जानकारी:
- #आरजीबी
- #एआरजीबी
- #RRGGBB
- #AARRGGBB
android:lStar
- फ़्लोटिंग पॉइंट. ज़रूरी नहीं. यह एट्रिब्यूट, बेस के रंग की असल चमक में बदलाव करता है. इसके लिए, किसी
0 और 100 के बीच का फ़्लोटिंग-पॉइंट वैल्यू या कोई थीम एट्रिब्यूट जो इसी तरह हल हो जाता है. आइटम का
कुल कलर को कैलकुलेट करने के लिए, बेस कलर को सुलभता फ़्रेंडली कलर स्पेस में बदला जाता है
और
lStar
एट्रिब्यूट पर दी गई वैल्यू पर अपने L* को सेट करें.
उदाहरण: android:lStar="50"
android:state_pressed
- बूलियन.
"true"
अगर ऑब्जेक्ट पर टैप करते समय इस आइटम का इस्तेमाल किया जाता है, जैसे कि जब किसी बटन को टैप किया जाता है
को छुआ या क्लिक किया जाता है. अगर इस आइटम का इस्तेमाल डिफ़ॉल्ट रूप से, टैप न किए गए मोड में किया जाता है, तो यह "false"
होगा.
android:state_focused
- बूलियन.
"true"
अगर ऑब्जेक्ट के फ़ोकस में होने पर इस आइटम का इस्तेमाल किया जाता है, जैसे कि जब कोई बटन हो
को ट्रैकबॉल या डी-पैड का इस्तेमाल करके हाइलाइट किया जाता है. अगर इस आइटम का इस्तेमाल डिफ़ॉल्ट रूप से किया गया है, तो यह "false"
होगा,
फ़ोकस नहीं किया जा सकता.
android:state_selected
- बूलियन.
"true"
, अगर ऑब्जेक्ट को चुने जाने के दौरान इस आइटम का इस्तेमाल किया जाता है, जैसे कि जब
टैब खुला हो. अगर इस आइटम का इस्तेमाल तब किया गया था, जब ऑब्जेक्ट को नहीं चुना गया था, तो यह "false"
है.
android:state_checkable
- बूलियन. अगर इस आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट की जांच की जा सकती है, तो
"true"
. अगर यह "false"
है, तो
आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट की जांच नहीं की जा सकती. यह सिर्फ़ तब काम आता है, जब ऑब्जेक्ट यह कर सके
चेक करने लायक और चेक न किए जा सकने वाले विजेट के बीच ट्रांज़िशन.
android:state_checked
- बूलियन. अगर ऑब्जेक्ट की जांच करते समय इस आइटम का इस्तेमाल किया जाता है, तो
"true"
. अगर यह "false"
है, तो
का इस्तेमाल तब किया जाता है जब ऑब्जेक्ट से चुने हुए का निशान हटाया जाता है.
android:state_enabled
- बूलियन.
"true"
, अगर ऑब्जेक्ट के चालू होने पर इस आइटम का इस्तेमाल किया जाता है, तो
टच या क्लिक इवेंट पाने की सुविधा मिलती है. अगर ऑब्जेक्ट को बंद किए जाने पर इस्तेमाल किया जाता है, तो यह "false"
होगा.
android:state_window_focused
- बूलियन.
"true"
, अगर इस आइटम का इस्तेमाल तब किया जाता है, जब ऐप्लिकेशन विंडो फ़ोकस में हो,
इसका मतलब है
ऐप्लिकेशन फ़ोरग्राउंड में हो. अगर ऐप्लिकेशन में इस्तेमाल किए जाते समय इस आइटम का इस्तेमाल किया जाता है, तो यह "false"
होगा
विंडो पर फ़ोकस नहीं हो, जैसे कि नोटिफ़िकेशन शेड नीचे खींचे या कोई डायलॉग दिखे.
ध्यान दें: राज्य की सूची में, वह पहला आइटम जो
ऑब्जेक्ट की मौजूदा स्थिति से मैच करता है. इसलिए, अगर सूची के पहले आइटम में
तो यह हर बार लागू होता है. इसलिए, अपने
डिफ़ॉल्ट वैल्यू को आखिरी में डालें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है.
- उदाहरण:
- एक्सएमएल फ़ाइल
res/color/button_text.xml
पर सेव की गई:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
यह लेआउट एक्सएमएल, कलर लिस्ट को View
पर लागू करता है:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- यह भी देखें:
-