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

ListFragment Item Selected Background

Итак, у меня есть ListFragment, настроенный с несколькими выборами, которые открывают новые фрагменты. Часть меня хочет, чтобы каждый элемент в ListFragment (у меня около 6) имел другой цвет, установленный для его выбора, и я вызываю свой getListView().setItemChecked(index, true); Можно ли установить разные фоны или все они должны быть одинаковыми? Благодарю.

4b9b3361

Ответ 1

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

Если вы посмотрите на демонстрацию фрагмента макета, элементы списка используют этот макет:

setListAdapter(new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));

Этот макет:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

И установленный здесь андроид: фоновый рисунок сводится к (для темной темы без голоса):

<selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <item android:state_activated="true"
            android:drawable="@android:drawable/list_selector_background_selected" />
    <item android:drawable="@color/transparent" />
</selector>

Итак, просто напишите свои собственные чертежи, которые используют разные чертежи для их активированного состояния.

(Примечание. Предполагаю, что вы работаете с Honeycomb, где было введено активированное состояние. Для предыдущих версий платформы это не так чисто, но не слишком сложно - вам нужно написать подкласс класса, который реализует Checkable и изменяет его фон на основе проверенного состояния.)