Подтвердить что ты не робот

Список избранных списков Android

Кажется, у меня проблема с пользовательским интерфейсом со списком. У меня есть список и выбор любого элемента в списке, выделяется весь список. Выбор работает нормально, я получаю правильный элемент в слушателе.

Но проблема в том, что когда я выбираю какой-либо элемент, весь список просматривается, поэтому трудно определить, какая строка была выбрана.

Это отлично работает на 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>
4b9b3361

Ответ 1

Я исправил это, удалив эту строку: (не уверен, почему это сработало)

Android: listSelector = "# 99000000"

Ответ 2

Недавно у меня была такая же проблема, но причина была в 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.

Ответ 3

Если вы не хотите менять свой селектор, вы также можете установить его как фон макета элемента списка, а не в поле 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" />