2012-06-12 13 views
12

मुझे एक सूचीदृश्य के साथ यूआई समस्या है। मेरे पास एक सूचीदृश्य है और सूची में किसी भी आइटम का चयन, संपूर्ण सूचीदृश्य पर प्रकाश डाला गया है। चयन ठीक काम कर रहा है, मुझे श्रोता में सही वस्तु मिलती है।एंड्रॉइड सूचीदृश्य पूरी सूची चयनित हो रही है

लेकिन समस्या यह है कि जब मैं किसी भी आइटम का चयन करता हूं, तो संपूर्ण सूचीदृश्य हाइलाइट हो जाता है, इसलिए यह बताना मुश्किल है कि कौन सी पंक्ति चुनी गई है।

यह एंड्रॉइड> 3.1 पर ठीक काम कर रहा है - वर्तमान में मैं 2.3 डिवाइस पर परीक्षण कर रहा हूं। (यकीन नहीं क्यों यह काम किया)

एंड्रॉयड:

<ListView 
     android:id="@+id/myList" 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     android:layout_marginTop="@dimen/margin_medium" 
     android:background="@drawable/border" 
     android:listSelector="#99000000" 
     android:scrollbarFadeDuration="1000000" 
     android:scrollbars="vertical" > 
    </ListView> 

उत्तर

-3

मैं इस लाइन को हटाने के द्वारा इस तय listSelector = "# 99,000,000"

26

मैं हाल ही में एक ही मुद्दा था, लेकिन कारण में था एंड्रॉइड < 3.0 बग: यदि आप अपनी सूची आइटम दबाए गए चयनकर्ता के लिए एक रंगीन के रूप में @ रंग सेट करते हैं, तो यह संपूर्ण सूची क्षेत्र भर जाएगा। समाधान @color के बजाय 'आकार' को खींचने योग्य का उपयोग करना है।

तो, ऐसी कोई भी सामग्री के साथ res/drawable फ़ोल्डर में एक नया एक्सएमएल फ़ाइल बनाएँ:

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

    <solid android:color="@color/my_list_item_pressed_color" /> 
</shape> 

और संदर्भ बनाया drawable अपने ListView चयनकर्ता में state_pressed के लिए (भी res/drawable फ़ोल्डर में एक एक्सएमएल फ़ाइल के रूप में बनाया):

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" android:drawable="@drawable/list_item_pressed_bg" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

और अपने ListView में इस चयनकर्ता का उपयोग:

<ListView 
    ..... 
    android:listSelector="@drawable/list_item_selector" /> 

यह सब कुछ है। एंड्रॉइड 2.2-2.3 के साथ कम से कम काम करता है।

+0

धन्यवाद: यह आपकी सूची आइटम लेआउट

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/background_color"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Your text here" /> </LinearLayout> 

और अपनी सूची नहीं सूची चयनकर्ता के साथ है! ये पूर्व 3.0/4.0 बग वास्तव में परेशान हैं, क्योंकि वे बिल्कुल दस्तावेज नहीं हैं! –

+0

इच्छा है कि मुझे इस पोस्ट घंटे पहले मिले। ध्यान दें, आप इसे प्रोग्रामिक रूप से भी कर सकते हैं: 'आकार बदलने योग्य एसडी = नया आकार निकालने योग्य (नया RectShape()); । Sd.getPaint() setColor (Color.RED); listview.setSelector (एसडी); ' –

1

यदि आप अपने चयनकर्ता को नहीं बदलना चाहते हैं, तो आप सूची सूची के चयनकर्ता क्षेत्र की बजाय सूची आइटम के लेआउट की पृष्ठभूमि के रूप में भी सेट कर सकते हैं। सूची आइटम को "चयनित" स्थिति प्राप्त होती है जब स्पर्श किया जाता है और रंग ठीक से प्रदर्शित होता है।

यह एंड्रॉइड के सभी संस्करणों के लिए काम करता है।

पूर्व:

<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
संबंधित मुद्दे