изменение цвета фона ListView отключает цвет подсветки - PullRequest
3 голосов
/ 16 января 2011

У меня есть список результатов поиска, которые отображаются в ListActivity.Когда я изменяю цвет фона элементов ListActivity, меняя цвет фона первого LinearLayout (parent), подсветка OnClick перестает работать.Почему это так и как я могу заставить эту подсветку работать, когда я изменяю фоновый цвет своих элементов?На заметку, можно ли изменить цвет этой подсветки?Спасибо.

Мой XML выглядит примерно так:

<LinearLayout>
<LinearLayout>
 <ImageView>
 <LinearLayout>
  <TextView>
  </TextView>
  <TextView>
  </TextView>
  <TextView>
  </TextView>
 </LinearLayout>
</LinearLayout>

и моя деятельность выглядит так:

public class ResultsPage extends ListActivity {

Ответы [ 2 ]

5 голосов
/ 19 октября 2011

Как говорит Джеймс, если вы измените цвет фона в своем коде, когда пользователь выбирает элемент в ListView во время выполнения, он не выделяет этот элемент.

Вы можете исправить это поведение, используя атрибут drawSelectorOnTop = "true" в определении ListView. Например

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:drawSelectorOnTop="true"
/>
4 голосов
/ 16 января 2011

Это происходит из-за способа, которым Android обрабатывает фон.Фон по умолчанию для ListView - это рисуемый селектор, определенный в XML, который определяет разные фоны для разных состояний.Когда вы указываете ListView иметь определенное фоновое изображение или цвет, вы теряете селектор, который говорит ему, что делать в различных состояниях.

См. Раздел «Список состояний» здесь http://developer.android.com/guide/topics/resources/drawable-resource.html

И, чтобы ответить на ваш второй вопрос, да.Если вы хотите изменить фон подсветки, просто сделайте это, как указано в документации на этой странице выше.Вы можете без проблем определить свои собственные списки в виде списков состояний.

...