/ / Android listpreview весь список, вибраний - android, listview

Весь список списку списку перегляду Android вибирається - android, listview

У мене, здається, виникають проблеми з інтерфейсом користувача з переглядом списку. У мене є перегляд списку і вибираючи будь-який елемент у списку, висвітлює весь перегляд списку. Вибір працює добре, я отримую правильний предмет у слухачі.

Але проблема полягає в тому, що коли я вибираю будь-який елемент, виділяється весь перегляд списку, тому важко сказати, який рядок вибрано.

Це добре працює на 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"