2013-06-10 5 views
5

मैं उस हाइलाइट को अक्षम करना चाहता हूं जो तब दिखाई देता है जब उपयोगकर्ता कोड से पंक्ति (सूची चयनकर्ता) चुनता है। मैं ऑनक्लिक और सक्षम सेटिंग्स को अक्षम नहीं करना चाहता (मैं अभी भी क्लिक सुनना चाहता हूं, बस हाइलाइट को हटाना चाहता हूं)।एंड्रॉइड - ListView चयन हाइलाइट अक्षम करें लेकिन ऑनक्लिक सक्षम रखें

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_window_focused="false" android:drawable="@android:color/transparent"/> 

<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> 
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_light" /> 
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_disabled_holo_light" /> 
<item android:state_focused="true" android:state_pressed="true" android:drawable="@color/transparent" /> 
<item android:state_focused="false" android:state_pressed="true" android:drawable="@color/transparent" /> 
<item android:state_focused="true" android:drawable="@drawable/list_focused_holo" /> 

</selector> 

और फिर कोड से या एक्सएमएल द्वारा निर्धारित:

listView.setSelector(R.drawable.my_transparent_selector); 

इस विधि के लिए जावाडोक कहते

+0

कौन सा अनुकूलक आप उपयोग कर रहे हैं? –

+0

एक साधारण ऐरेएडाप्टर । क्या इससे कोई फर्क पड़ता है? –

+1

"मैं उस हाइलाइट को अक्षम करना चाहता हूं जो तब दिखाई देता है जब उपयोगकर्ता पंक्ति का चयन करता है" - क्यों? उन उपयोगकर्ताओं के बारे में क्या है जो तीर कुंजियों, डी-पैड और आपके ऐप को नेविगेट करने की तरह उपयोग करते हैं? कृपया अपने ऐप को * सभी * उपयोगकर्ताओं द्वारा उपयोग करने की अनुमति दें, न केवल टचस्क्रीन का उपयोग करने वाले। – CommonsWare

उत्तर

5

बस एक drawable उस में एक पारदर्शी रंग है, कुछ इस तरह बना सकते हैं:

एक ड्रायबल सेट करें जिसका उपयोग वर्तमान में चयनित आइटम को हाइलाइट करने के लिए किया जाना चाहिए।

और XML विशेषता है:

एंड्रॉयड: listSelector

आपको याद तुम भी फोकस राज्य है, सभी राज्यों के साथ खेल सकते हैं।

+0

कोड से निकोलस, एक्सएमएल नहीं। मैं सूची चयनकर्ता विशेषता का उपयोग कर इसे एक्सएमएल से पहले ही संभाल सकता हूं। –

+0

मुझे नहीं पता कि आपको इस तरह की आवश्यकता क्यों है, इसलिए दो फाइलें रखें और उनके साथ खेलो। –

+0

नहीं, संपादन के बाद, यह ठीक काम कर रहा है। मैं पंक्ति हाइलाइट के बजाय किसी प्रकार का चेकबॉक्स का उपयोग कर रहा हूं। आपका जवाब एक आकर्षण की तरह काम करता है। धन्यवाद। –

17

अपने ListView एक्सएमएल में android:listSelector="@android:color/transparent" निर्दिष्ट करें:

यह सूचीदृश्य के साथ एक उदाहरण है।

+0

बहुत आसान और चाल है! –

1

listview.setSelector(new ColorDrawable(Color.TRANSPARENT));

+0

यह मेरे लिए सबसे आसान था, जो एक प्रोग्रामेटिक दृष्टिकोण के लिए जाता है धन्यवाद। – Zhang

4

कोशिश मैं इस तरह से किया है:

ListView के दो गुण जोड़ कर।

android:cacheColorHint="@android:color/transparent" 
android:listSelector="@android:color/transparent" 

आपका ListView चाहिए लग रहा है नीचे की तरह:

<ListView 
    android:id="@+id/listView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:cacheColorHint="@android:color/transparent" 
    android:listSelector="@android:color/transparent"> 

</ListView> 

हो गया

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