StateListDrawable

#android

#Android

Вопрос:

У меня есть ListView, встроенный в ListActivity. Я хочу, чтобы фон моих строк менялся при нажатии элемента.

Итак, я написал в своем ListActivity: this.getListView().setSelector(R.drawable.my_custom_selector);

Это my_custom_selector.xml :

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

drawable / selector — это селектор.9.png

Проблема в том, что ничего не происходит.

НО: когда я заменяю этот объект рисования цветом, весь экран приобретает этот цвет при нажатии строки.

Можете ли вы мне помочь?

Ответ №1:

Попробуйте установить свой селектор listview в файле .xml, например, в вашем listview

 android:background="@drawable/your_selector"
  

вот небольшое, но хорошее руководство, проверьте его. Это также поможет вам решить вашу проблему.

Комментарии:

1. У меня нет listview в xml. Это ListActivity. (Кстати, вы правы, если бы у меня был listview в моем xml, я мог бы использовать listSelector в моем XML, и это сработало бы). Итак, кажется, единственный способ получить ListView — это this.getListView() в ListActivity

2. Вы можете переопределить методы onclick, onfocus, чтобы изменить цвета фона в представлении списка.

Ответ №2:

  1. Неверный код для setSelector элемента ListViewItem. Вы должны определить элемент ListViewItem в xml и установить для него параметр setSelector вместо параметра setSelector для ListView