Итак, у меня есть ListFragment, настроенный с несколькими выборами, которые открывают новые фрагменты. Часть меня хочет, чтобы каждый элемент в ListFragment (у меня около 6) имел другой цвет, установленный для его выбора, и я вызываю свой getListView().setItemChecked(index, true);
Можно ли установить разные фоны или все они должны быть одинаковыми? Благодарю.
ListFragment Item Selected Background
Ответ 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 и изменяет его фон на основе проверенного состояния.)