У мене, здається, виникають проблеми з інтерфейсом користувача з переглядом списку. У мене є перегляд списку і вибираючи будь-який елемент у списку, висвітлює весь перегляд списку. Вибір працює добре, я отримую правильний предмет у слухачі.
Але проблема полягає в тому, що коли я вибираю будь-який елемент, виділяється весь перегляд списку, тому важко сказати, який рядок вибрано.
Це добре працює на Android> 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>
Відповіді:
26 за відповідь № 1Нещодавно у мене було те саме питання, але причина булав програмі Android <3,0 помилка: якщо ви вибрали @color для вибору для списку натиснутого вибору елемента списку, він заповнить всю область списку. Рішенням є використання рисунка "фігури" замість @color.
Отже, створіть новий XML-файл у 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>
І довідка створена для малювання у вашому ListView
селектор для state_pressed
(також створений як XML-файл у 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" />
Це все. Працює принаймні з Android 2.2-2.3.
1 для відповіді № 2
Якщо ви не хочете змінити свій вибір, виВи також можете встановити його як тло макета елемента списку, а не в полі listSelector списку ListView. Елементи списку отримують стан "вибраного" при дотику і колір відображається належним чином.
Це працює для всіх версій Android.
Наприклад: Це макет вашого списку
<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>
І ваш список без вибору списку:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
-3 для відповіді № 3
Я виправив це, видаливши цей рядок: (не впевнений, чому він працював)
android: listSelector = "# 99000000"