मैं एंड्रॉइड स्विच कैसे स्टाइल कर सकता हूं?


121

एपीआई 14 में शुरू किए गए स्विच विजेट को होलो थीम के साथ डिफ़ॉल्ट रूप से स्टाइल किया गया है। मैं इसे थोड़ा अलग करना चाहता हूं, इसके रंग बदलना और ब्रांडिंग कारणों से थोड़ा आकार देना चाहता हूं। इस बारे में कोई कैसे जाता है? मुझे पता है कि यह संभव होना चाहिए, क्योंकि ive ने डिफ़ॉल्ट आईसीएस और सैमसंग के टचविज़ थीम के बीच अंतर को देखा

यहाँ छवि विवरण दर्ज करें

मुझे लगता है कि मुझे कुछ राज्य ड्राॅबल्स की आवश्यकता होगी, और मैंने http://developer.android.com/reference/android/R.styleable.html में कुछ शैलियों को Switch_thumb और Switch_track के साथ देखा है जो इस तरह दिखते हैं जैसे मैं बाद में हो सकता हूं । मुझे नहीं पता कि उनका उपयोग करने के बारे में कैसे जाना जाए।

मैं ActionbarSherlock का उपयोग कर रहा हूँ अगर यह एक फर्क पड़ता है। केवल API v14 या इसके बाद के संस्करण चलने वाले डिवाइस बिल्कुल ही स्विच का उपयोग करने में सक्षम होंगे।

जवाबों:


258

आप उन ड्रॉबल्स को परिभाषित कर सकते हैं जो पृष्ठभूमि के लिए उपयोग किए जाते हैं, और स्विचर भाग इस प्रकार है:

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/switch_thumb"
    android:track="@drawable/switch_bg" />

अब आपको एक चयनकर्ता बनाने की ज़रूरत है जो स्विचर ड्रॉबल के लिए विभिन्न राज्यों को परिभाषित करता है। यहाँ Android स्रोतों से प्रतियां:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/switch_thumb_disabled_holo_light" />
    <item android:state_pressed="true"  android:drawable="@drawable/switch_thumb_pressed_holo_light" />
    <item android:state_checked="true"  android:drawable="@drawable/switch_thumb_activated_holo_light" />
    <item                               android:drawable="@drawable/switch_thumb_holo_light" />
</selector>

यह थंब ड्रॉबल को परिभाषित करता है, जो छवि पृष्ठभूमि पर ले जाया गया है। स्लाइडर के लिए उपयोग की जाने वाली चार नौप्रैच छवियां हैं:

निष्क्रिय संस्करण (xhdpi संस्करण जो Android उपयोग कर रहा है) निष्क्रिय संस्करण
दबाया गया स्लाइडर: दबाया हुआ स्लाइडर
सक्रिय स्लाइडर (राज्य पर): सक्रिय स्लाइडर
डिफ़ॉल्ट संस्करण (राज्य के बाहर):यहाँ छवि विवरण दर्ज करें

पृष्ठभूमि के लिए तीन अलग-अलग राज्य हैं जो निम्नलिखित चयनकर्ता में परिभाषित हैं:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/switch_bg_disabled_holo_dark" />
    <item android:state_focused="true"  android:drawable="@drawable/switch_bg_focused_holo_dark" />
    <item                               android:drawable="@drawable/switch_bg_holo_dark" />
</selector>

निष्क्रिय संस्करण: निष्क्रिय संस्करण
केंद्रित संस्करण: केंद्रित संस्करण
और डिफ़ॉल्ट संस्करण:डिफ़ॉल्ट संस्करण

स्टाइल स्विच करने के लिए बस इस दो चयनकर्ताओं को बनाएं, उन्हें अपने स्विच दृश्य पर सेट करें और फिर सात छवियों को अपनी इच्छित शैली में बदलें।


1
बहुत विस्तृत धन्यवाद, 9-पैच स्लाइडर छवियां जो अंगूठे के हिस्से को ट्रैक से बाहर ले जाने में विशेष रूप से सहायक थीं क्योंकि मैं काम नहीं कर सकता था कि वे कैसे कर रहे थे। (डिफ़ॉल्ट स्लाइडर में नुकीले किनारे वाले बिट्स हैं जो ट्रैक के अंत में एक तरफ एक चौकोर छोर बनाते हैं)
Glenn.nz

2
एक और राज्य है जो <आइटम एंड्रॉइड है: state_checked = "true"> जो कि ट्रैक छवि को तब बदल सकता है जब स्विच "ऑन" अवस्था में हो। इसलिए यदि आप "चालू" / "बंद" पर ट्रैक बदलना चाहते हैं, तो इस स्थिति का उपयोग करें।
narangrajeev81

1
मैं अंगूठे के लिए पाठ रंग कैसे कर सकता हूं? मैं इसे कहीं भी नहीं पा सकता :(
pojomx

1
@ pojomx क्या आपको टेक्स्ट कलर के लिए कोई समाधान मिला - यानी ऑन / ऑफ टेक्स्ट कलर? मैं एक ही मुद्दे का सामना कर रहा हूं और एक ही बिंदु पर अटक गया हूं।
7

टेक्स्ट का रंग बदलने के लिए => android: switchTextAppearance = "@ style / mySwitchTextSyle"
एंड्रयू

50

यह Janusz द्वारा एक भयानक विस्तृत जवाब है। लेकिन सिर्फ उन लोगों के लिए जो जवाब के लिए इस पेज पर आ रहे हैं, आसान तरीका http://android-holo-colors.com/ (मृत लिंक) एंड्रॉइड एसेट स्टूडियो से जुड़ा हुआ है

सभी उपकरणों का एक अच्छा विवरण AndroidOnRocks.com पर है (अभी साइट ऑफ़लाइन है)

हालाँकि, मैं सभी को Janusz के उत्तर को पढ़ने की अत्यधिक सलाह देता हूँ क्योंकि इससे समझ स्पष्ट हो जाएगी। सामान को जल्दी असली करने के लिए उपकरण का उपयोग करें


6
महान समय बचाने वाला। 9-पैच, स्टेट लिस्ट ड्रॉइबल्स इत्यादि सभी एक क्लिक में!
स्टीव

यह उत्तर इतना आसान है कि मैं इसे "कस्टम रंग द्वारा एंड्रॉइड होलो नियंत्रण आसानी से बनाने के उपकरण" के एक प्रश्न के रूप में पोस्ट किया हुआ देखना चाहता हूं और इसका उत्तर स्वीकार कर लिया है। डेवलपर्स को इसकी जरूरत है।
राचेल

मुझे यकीन है कि यह एक महान उपकरण रहा होगा ... सभी लिंक मृत हैं, दुख की बात है
Razvan_TK9692

3

आप विभिन्न रंग गुणों को सेट करके सामग्री शैलियों को अनुकूलित कर सकते हैं। उदाहरण के लिए कस्टम एप्लिकेशन थीम

<style name="CustomAppTheme" parent="Theme.AppCompat">
    <item name="android:textColorPrimaryDisableOnly">#00838f</item>
    <item name="colorAccent">#e91e63</item>
</style>

कस्टम स्विच विषय

<style name="MySwitch" parent="@style/Widget.AppCompat.CompoundButton.Switch">
    <item name="android:textColorPrimaryDisableOnly">#b71c1c</item>
    <item name="android:colorControlActivated">#1b5e20</item>
    <item name="android:colorForeground">#f57f17</item>
    <item name="android:textAppearance">@style/TextAppearance.AppCompat</item>
</style>

आप xml drawables को परिभाषित करके स्विच ट्रैक और स्विच थंब को नीचे की छवि के अनुसार अनुकूलित कर सकते हैं । अधिक जानकारी के लिए http://www.zoftino.com/android-switch-button-and-custom-switch-examples

कस्टम स्विच ट्रैक और अंगूठे


1

वैकल्पिक और बहुत आसान तरीका 9-पैच के बजाय आकृतियों का उपयोग करना है। यह पहले से ही यहाँ समझाया गया है: https://stackoverflow.com/a/24725831/512011


idk, kishu27 के उत्तर में उल्लिखित टूल सिर्फ रंग बदलने के लिए बहुत तेज था क्योंकि यह आपके लिए सभी फाइलों को बनाता है। मुझे लगता है कि अगर आप रंग के अलावा आकार को अनुकूलित करना चाहते थे, हालांकि यह शायद तेज है।
जेस्टेफन

उपकरण वास्तव में बहुत अच्छा है, हालांकि, स्पष्ट रूप से, मुझे इस विचार का शौक नहीं है कि यदि आप किसी चीज़ का रंग बदलना चाहते हैं तो आपको छवियों का एक समूह बनाना होगा। इसके अलावा, यदि आप आकृतियों का उपयोग कर रहे हैं, तो आपके पास स्विच पोजीशन पर अलग-अलग रंग हो सकते हैं।
netpork

यह सच है, अगर आप मेरी तरह अभद्र हैं और रंग बदलते रहते हैं, जब तक आप एक को पसंद नहीं करते हैं, तब तक यह बहुत तेज है, मेरे लिए भाग्यशाली है कि कोई और रंग लेने का प्रभारी है :)
JStephen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.