2015-08-28 6 views
6

मैं एक एंड्रॉइड ऐप लिख रहा हूं और अब मैं इसे स्टाइल कर रहा हूं। मैं एक कस्टम थीम का उपयोग कर रहा हूं जो Theme.Holo.Light का बच्चा है। मुझे वास्तव में Theme.Holo.Light पसंद है क्योंकि जब आप इसे क्लिक करके रखते हैं तो उसके बटन का विशेष प्रभाव होता है। नीचे चित्र में कम बटन की तरह:इसके रंग को बदलने के बाद एक बटन अपने मूल व्यवहार को क्यों खो देता है?

क्लिक करें नहीं: enter image description here

क्लिक: enter image description here

ऊपरी बटन बदल दिया गया है रंग। अब जब मैं उस बटन पर क्लिक करता हूं, तो इसका प्रभाव नहीं होता है। मैं वास्तव में समझ में नहीं आता क्यों। क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है और मैं रंगीन बटन के साथ एक ही प्रभाव कैसे प्राप्त कर सकता हूं?

और साथ ही, रंगीन बटन फट लगता है।

+0

मुझे लगता है कि आपके प्रभाव और रंग का रंग बटन एक ही है इसलिए आप इसे नहीं देख रहे हैं। अपने बटन के रंग को अन्यथा बदलने का प्रयास करें और –

उत्तर

1

ऐसा इसलिए है क्योंकि बटन क्लिक की स्थिति के आधार पर विभिन्न रंग/प्रभाव/ड्रॉबल्स प्रदर्शित करने के लिए चयनकर्ता का उपयोग करता है। आप Color State List Resource पर लिंक देख सकते हैं।

अपना खुद का निर्माण करने के लिए आपको एक स्लीसीटर सीएमएल फ़ाइल बनाना है और इसे अपने ड्रॉबल्स फ़ोल्डर में रखना है।

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

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/shape_btn_default_normal_gray" android:state_enabled="true" android:state_pressed="false"/> 
    <item android:drawable="@drawable/shape_btn_default_pressed_gray" android:state_pressed="true"/> 
    <item android:drawable="@drawable/shape_btn_default_disabled_gray"/> 
</selector> 

या रंग

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/dark_green" android:state_enabled="true" android:state_pressed="false"/> 
    <item android:drawable="@color/light_green" android:state_pressed="true"/> 
    <item android:drawable="@color/gray"/> 
</selector> 

के साथ इस आप इस तरह अपने लेआउट एक्सएमएल में पृष्ठभूमि drawable सेट करने के लिए लागू करने के लिए।

<Button 
    android:id="@+id/my_btn" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Some text" 
    android:background="@drawable/selector_btn_default_gray"/> 
+0

देखें '@ drawable/shape_btn_default_normal_gray',' @ drawable/shape_btn_default_pressed_gray' आदि की परिभाषा कहां है? – Sweeper

+0

यह एक उदाहरण था जिसे आप जो कुछ भी पसंद करते हैं, खींचने योग्य, रंग इत्यादि का उपयोग कर सकते हैं – Eoin

+0

ऐसा लगता है कि मैं हेक्स रंग डाल सकता हूं हालांकि – Sweeper

1

यह भौतिक डिजाइन का "लहर प्रभाव" है।
आपने उस प्रभाव के लिए अपनी शैली को परिभाषित किया है।
नीचे लिंक आपको मदद कर सकता है या आप StackOverflow पर कई अन्य उत्तरों की खोज कर सकते हैं।
Material effect on button with background color

1

यह अपने व्यवहार खो देता है यह नहीं है कि आप ऊपर है ... तो डिफ़ॉल्ट रूप से पृष्ठभूमि सेट कर दिया जाता रूप में एक ही पैमाने क्लिक (आपकी दूसरी छवि में) के बाद देख सकते हैं बटन शो यह है कि दिखाने के लिए के रूप में button(जैसे padding या तो) और oncklick प्रभाव दिखाने के लिए बदल सकते हैं ... तो जब आप अपनी इच्छा पृष्ठभूमि को बटन पर सेट करते हैं ... वर्तमान में इस पर क्या हो रहा है पर पूरा परिवर्तन होता है और फिर आपको मैन्युअल रूप से onclick प्रभाव सेट करें ..

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

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