Настройка панели меню Android Background & Persistence - использование атрибута в старых версиях приводит к сбою. Существует ли подход к теме/шаблону?

В Android 3.0 понятие "проверено" может отображаться с использованием "активированного" фона. Это дает вам постоянный бар, который вы видите, когда вы нажимаете фрагмент списка, обеспечивая контекст для фрагмента в правом списке (например, нажатие на папку в Gmail выделяет эту папку и открывает другой фрагмент списка, чтобы отобразить разговоры в этой папке).

Например, образцы фрагментов показывают такие вещи, как:

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

Этот ресурс (android.R.layout.simple_list_item_activated_1) является новым для Android 3.0. Что делает его "активированным":

android:background="?android:attr/activatedBackgroundIndicator"

Это значение атрибута является новым для Android 3.0 и приведет к сбою, если вы попытаетесь использовать его в более ранних версиях Android, из того, что я могу сказать. Я хочу установить фон для этого магического значения для комбинации 3.0/large/landscape и пропустить его в противном случае.

Я могу выполнить это, имея две отдельные версии макета, одну в наборе ресурсов -v11, одну в регулярном наборе ресурсов. Это немного меньше DRY, чем хотелось бы, так как основная часть макета одинакова, и только один атрибут включен или пропущен.

Я попытался использовать доступные алиасы ресурсов, поэтому android:background может ссылаться на псевдоним, и псевдоним будет обрабатывать дифференциацию -v11, но <bitmap> drawables не похоже на android:src="@null".

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

Кто-нибудь разработал шаблон для использования "активированного" на 3.0 и пропустив его на pre-3.0 за пределами отдельных макетов?

Спасибо!

Ответ 1

Стили - ваш друг....

У вас есть два каталога значений: один - значения-v11, другие значения по умолчанию.

Каждый каталог значений содержит файл styles.xml, разница состоит в том, что значения по умолчанию содержат:

<style name="listViewActivatedStyle"/>

Значения -v11 содержат:

<style name="listViewActivatedStyle">
   <item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>

Затем вы можете использовать один макет, который использует;

style="@style/listViewActivatedStyle"

и выбран соответствующий.