एसओ पर यहां कई संबंधित प्रश्नों को पढ़ा है, साथ ही एंड्रॉइड डॉक्स और स्रोत को देखने के लिए इसे देखने का प्रयास किया है, लेकिन मैं स्टंप हूं, हालांकि यह दिया गया है कि listSelector, केवल चयनित आइटम पर शैलियाँ लागू करने लगता है मैं हैरान नहीं हूँ ...एंड्रॉइड लिस्ट व्यू स्टेट लिस्ट डिफॉल्ट आइटम पृष्ठभूमि नहीं दिखा रहा है
मैं सूचीदृश्य यहाँ main.xml में परिभाषित किया है:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="5dp"
android:divider="#000000"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector" />
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:singleLine="false"
android:text="@string/message_list_empty" />
</FrameLayout>
listSelector संदर्भित यहाँ है (से बड़े पैमाने पर उधार ली गई एसडीके में मिली डिफ़ॉल्ट एंड्रॉइड स्टेट लिस्ट: /android/platforms/android-8/data/res/drawable/list_selector_background.xml):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- the window has lost focus, disable the items -->
<item
android:state_window_focused="false"
android:drawable="@drawable/shape_row_disabled" />
<!-- the list items are disabled -->
<item
android:state_enabled="false"
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/shape_row_disabled" />
<item
android:state_enabled="false"
android:state_focused="true"
android:drawable="@drawable/shape_row_disabled" />
<item
android:state_enabled="false"
android:drawable="@drawable/shape_row_disabled" />
<!-- the list items are enabled and being pressed -->
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/shape_row_transition" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/shape_row_transition" />
<!-- the list items are enabled and being used -->
<item
android:state_focused="true"
android:drawable="@drawable/shape_row_selected" />
<!-- the default item -->
<item
android:drawable="@drawable/shape_row" />
</selector>
ड्रॉएबल संदर्भित आकार, आयत, इसलिए की तरह हैं गोल:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#EF6100"
android:centerColor="#FF8E00"
android:endColor="#EF6100"
android:angle="270" />
<corners
android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp" />
</shape>
तो, अंतिम परिणाम डिफ़ॉल्ट रूप से एक @ drawable/shape_row पृष्ठभूमि के साथ आइटम के साथ एक ListView, और उसके बाद अलग-अलग होना चाहिए राज्य के आधार पर रंगीन पृष्ठभूमि। जब मैं अपनी सूची को फायर करता हूं, तब सबकुछ ठीक काम करता है जब राज्य सक्रिय होते हैं, जैसे कोई आइटम फोकस हो जाता है, दबाया जाता है, आदि, लेकिन जब कोई भी चयनित नहीं होता है तो आइटमों में स्वयं पारदर्शी पृष्ठभूमि होती है (यानी डिफ़ॉल्ट दृश्य स्थिति)। मैं आशा व्यक्त की थी कि राज्य सूची के अंतिम नियम,
<item android:drawable="@drawable/shape_row" />
है कि राज्य पर कब्जा होगा, लेकिन यह काम नहीं कर रहा किसी कारण से। मैंने चीजों को चारों ओर स्थानांतरित कर दिया है और विभिन्न सेटिंग्स की कोशिश की है, और कुछ भी नहीं। अगर मैं row.xml फ़ाइल को संपादित करता हूं जिसे मैं सूची दृश्य में सूची आइटम को परिभाषित करने के लिए उपयोग करता हूं और एक विशिष्ट एंड्रॉइड जोड़ने की कोशिश करता हूं: पृष्ठभूमि जो @ drawable/shape_row को इंगित करती है, प्रत्येक पंक्ति को सही पृष्ठभूमि मिलती है, लेकिन दबाए जाने पर, फोकस पर, आदि राज्यों को संसाधित करने में विफल रहता है (या कम से कम, पृष्ठभूमि के रूप में कभी नहीं बदला जा सकता है)।
क्या कोई मुझे सही दिशा में इंगित कर सकता है? मैं इसे बिस्तर पर रखने के लिए बहुत करीब हूं, लेकिन लगभग हर चीज की कोशिश करने के बाद, सिर्फ सूची दृश्य आइटम को डिफ़ॉल्ट पृष्ठभूमि लेने के लिए नहीं मिल सकता है और एंड्रॉइड के माध्यम से लागू राज्य सूची का जवाब दे सकता है: सूची चयनकर्ता।
धन्यवाद,
पॉल
संपादित करें: itemBackground = "@ drawable/shape_row" main.xml में ListView, और आश्चर्य नहीं भाग्य के लिए (डॉक्स:
इसके अलावा सिर्फ एंड्रॉयड जोड़ने की कोशिश की राज्य का उपयोग मेनू आइटम की पृष्ठभूमि निर्दिष्ट करने के लिए किया जाना चाहिए, लेकिन सोचा कि यह सूची वस्तुओं के साथ एक शॉट के लायक था)।
एक और चीज ने कोशिश की, एंड्रॉइड जोड़ना: प्रत्येक चयनकर्ता और आइटम परिभाषाओं के लिए दृश्यमान = "सत्य"। स्टेटलिस्ट ड्रेवेबल दस्तावेज़ इंगित करते हैं कि "Provides initial visibility state of the drawable; the default value is false", लेकिन यह जोड़ना कुछ भी नहीं बदला।
EDIT2: तो, क्यूबर्टिकस द्वारा नीचे किए गए शोध के आधार पर, ऐसा लगता है कि प्रति दृश्य सूची चयनकर्ताओं का केवल एक सेट हो सकता है, जो सूची चयनकर्ता व्यवहार की पुष्टि करता है। मैं यह भी पुष्टि कर सकता हूं कि एंड्रॉइड को सेट करना: drawSelectorOnTop चयनित आइटम के सामने चयनकर्ता को स्थानांतरित करता है, लेकिन यह निश्चित रूप से आइटम को स्वयं अस्पष्ट करता है कि मैं केवल चयनकर्ता को ही देखता हूं (जो मेरे मामले में रंगीन आकार है)।
यहाँ सूची सेट पृष्ठभूमि के साथ कैसा दिखता है:
कारण सेट पृष्ठभूमि करने के लिए, वहाँ उपस्थिति में कोई परिवर्तन नहीं है जब आइटम चयनित हैं। अगर मैं एंड्रॉयड बदलने के लिए: सही पर drawSelectorOnTop निर्देश और किसी आइटम का चयन, मैं मिलता है:
और अंत में, अगर मैं सूची आइटम के लिए कोई पृष्ठभूमि छवि निर्धारित करते हैं, चयनकर्ता के रूप में उम्मीद से काम करता है, लेकिन निश्चित रूप से
तो, मेरी समस्या बनी हुई है; अगर मैं प्रत्येक सूची आइटम के लिए पृष्ठभूमि सेट नहीं करता हूं, तो मैं चयनकर्ता को देख सकता हूं लेकिन आइटम चयनित नहीं होने पर पृष्ठभूमि नहीं है। यदि मैं आइटम के लिए पृष्ठभूमि सेट करता हूं, तो चयनित नहीं होने पर वे बहुत अच्छे लगते हैं, लेकिन पृष्ठभूमि चयनकर्ता को अस्पष्ट करती है। क्या काम करने वाले चयनकर्ताओं के साथ एक विशिष्ट रूप से आकार की सूची आइटम होना संभव नहीं है?
किसी और को जो में वजन कर सकते हैं के लिए धन्यवाद।
दुर्भाग्यवश, मुझे अभी भी मेरी सूची दृश्य को अनुकूलित करने में समस्याएं आ रही हैं। मैंने यहां अपने विशिष्ट मुद्दों को पोस्ट किया: http://stackoverflow.com/questions/5426385/listview-with-nine-patch-item-background-issues; मैं आपके पास मौजूद किसी भी इनपुट की सराहना करता हूं। – LostNomad311
इसके अलावा, अपने बीजी रंग में सूची विशेषता "कैश कॉलरहिंट" सेट करें। अन्यथा, आपकी सूची में एक त्वरित स्वाइप के परिणामस्वरूप काले वस्तुओं की सूची हो सकती है। – larham1