2013-11-01 8 views
5

पर टैप करता है तो छविव्यू पर ब्लू हाइलाइट होता है मेरे पास एक ImageView और टेक्स्ट व्यू के साथ एक लाइनरलाउट "कार्ड" है। मैं चाहता हूं कि जब उपयोगकर्ता इसे टैप करता है तो कार्ड को हाइलाइट किया जाना चाहिए। उदाहरण के लिए http://www.youtube.com/watch?v=Yx1l9Y7GIk8&feature=share&t=15m17s देखें।जब कोई उपयोगकर्ता इसे

यह android:background="@drawable/blue_highlight" सेट करके टेक्स्टव्यू के लिए आसानी से किया जाता है। नीचे रेस/drawable/blue_highlight.xml है:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:drawable="@color/selected"/> 
    <item android:state_pressed="true" android:drawable="@color/pressed"/> 
    <item android:drawable="@color/bg_window"/> 
</selector> 

लेकिन इस imageView के लिए काम नहीं करता है, क्योंकि छवि सामने है और पृष्ठभूमि दिखाई नहीं देता है। एक छवि दृश्य के लिए अर्ध-पारदर्शी रंग के साथ टच हाइलाइट प्रभाव कैसे हो सकता है?

+2

मेरा मानना ​​है कि आप अपने लाइनरलाइट को फ्रेमलेआउट में डाल सकते हैं और इसके लिए अग्रभूमि विशेषता सेट कर सकते हैं। – Bracadabra

उत्तर

12

आश्चर्यजनक रूप से, FrameLayout foreground विशेषता है जो इस बात के लिए इस्तेमाल किया जा सकता है। नुकसान यह है कि आपको एक अतिरिक्त फ्रेमलेआउट तत्व जोड़ना होगा। कार्यान्वयन सरल है, इसलिए जब तक आपके पास फैंसी इमेज प्रोसेसिंग को लागू करने का समय न हो (तब तक छवि को थोड़ा रंग दें, फिर हाइलाइट लागू करें) और गतिशील रूप से राज्य ड्रॉबल्स का निर्माण करें, यह काफी अच्छा लगता है।

तो मेरे मामले में यह होगा:

<FrameLayout 
    android:foreground="@drawable/blue_highlight_image" 
    > 
    <ImageView ...> 
</FrameLayout> 

@ drawable/blue_highlight_image एक नया @ रंग/pressed_image मूल्य जो @ रंग के साथ इसी तरह की है/दबाया उपयोग करता है लेकिन एक अल्फा चैनल है, उदाहरण के लिए: # 81CFEB -> # एए 81 सीएफईबी।

सुझाव के लिए धन्यवाद @ वैंग।

+1

डिफ़ॉल्ट नीले रंग के रंग के लिए, आप इसका उपयोग कर सकते हैं: '? Android: attr/selectableItemBackground'। –

+0

यह बहुत अच्छा काम करता है, और जैसा कि @aleb ने इसका उल्लेख किया है, मैंने इसे हाइलाइट (30% अल्फा = 4 डी हेक्स में) बनाने के लिए अल्फा 30% का उपयोग किया था। – green0range

1

आप सही रास्ते पर हैं। Blue_highlight.xml को अपने ड्रॉइंग के रूप में उपयोग करने का प्रयास करें, लेकिन इसके बजाय वहां मौजूद रंगों का उपयोग करने के लिए आप जिस छवि को दिखाना चाहते हैं उसका उपयोग करें और दूसरी ड्रॉबल को परिभाषित करें जो हाइलाइट किए जाने पर छवि में रंग फ़िल्टर जोड़ता है।

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:drawable="@drawable/yourdrawable_with_colorfilter"/> 
    <item android:state_pressed="true" android:drawable="@drawable/yourdrawable_with_colorfilter"/> 
    <item android:drawable="@drawable/your_drawable"/> 
</selector> 
+0

धन्यवाद। स्थिर छवियों के लिए महान काम कर सकते हैं। छवियों को डेटाबेस या डाउनलोड से लागू करने के लिए और अधिक कठिन है। – aleb

+0

आप सही हैं। लेकिन आपने इसका जिक्र नहीं किया। अधिक गतिशील होने के लिए आप चयनकर्ता प्रोग्राम कर सकते हैं। [यहां] (http://stackoverflow.com/questions/4697528/replace-selector-images- प्रोग्रामेटिक रूप से) आप एक अच्छा उदाहरण (स्वीकृत उत्तर) पा सकते हैं। – Baschi

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