ListView с девятью патчами - PullRequest
2 голосов
/ 25 марта 2011

ВНИМАНИЕ: XML в этом вопросе неправильный, прочитайте ответ, прежде чем запутаться!


Я уже некоторое время бьюсь головой о стену.Следующие сообщения пролили свет на эту тему, но не смогли решить мою проблему: В списке состояний Android ListView не отображается фон элемента по умолчанию и Фон элемента ListView с помощью пользовательского селектора

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

Список:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/shopListHeader"
    />
  <ListView
    android:id="@+id/shopList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="0px"
    android:divider="#FFFFFFFF"
    android:listSelector="@drawable/shop_list_selector"
    />
</LinearLayout>

Селектор:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <!-- the list items are enabled and being pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/shop_list_item_pressed" />

    <item
        android:state_selected="true"
        android:textColor="#FFFFFFFF" />
</selector>

Справочная информация:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <item
      android:state_selected="true"
      android:drawable="@android:color/transparent" />

    <item
        android:drawable="@drawable/shop_list_item" />
</selector>

Как вы можете видеть, я перебрал примеры из ссылок.

Вы также можете заметить, что переключатель фона не работает.ссылка где угодно.Я начал подбрасывать его в случайных местах (если приложение скомпилировало дополнение или не имело никакого эффекта, или вызвало принудительное закрытие)

Я также попытался остановить изменение цвета текста на черный и серый, когдаэлемент выбран, но не нажат (можно сделать прокруткой списка).Так как мой фон будет черным в центре, текст становится частично невидимым при выделении.Насколько я могу судить, это дополнение (последний узел элемента в селекторе) ничего не делает.

Есть ли у кого-нибудь мысли по поводу того, как работает эта смехотворно трудоемкая функциональность?

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

Я собирался удалить этот поток, но я не могу, поэтому я посмотрю, не смогу ли я использовать это как пример того, чего не следует делать:)

Сначала в XML ListView:android:listSelector="@drawable/shop_list_selector"
Не делай этого!

Здесь я пытался установить фон элементов списка, а свойство android:background не работало.Возможно, вы заметили, что элемент XML отсутствует, и это потому, что он отсутствовал в моей голове!(Я никогда не касался этого в течение бесчисленных часов, которые я выбил из этой «проблемы»). Таким образом, строка android:background="@drawable/shop_list_selector" входит в свойства элемента, и все становится клевым.(Помните, что приведенный выше XML очень неправильный, поэтому не используйте его!)

... Ну, разве что в реальной жизни он выглядит не так хорошо, как в моей голове: (
Назадк чертежной доске !!!

3 голосов
/ 25 марта 2011

Вы не определили "нормальное" состояние, см. Этот пример

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/blue"
          android:state_pressed="true" />
    <item android:color="@color/red"
          android:state_selected="true" />
    <item android:color="@color/white" />
</selector>

здесь белый - это "нормальное" состояние, в здесь вы можете найти некоторую документацию по нему.

Надеюсь, это поможет

...