Android - применить selectableItemBackground в xml с поддержкой v7
даже с поддержкой android поддержки v7, включенной в мое приложение
добавление
android:background="?android:attr/selectableItemBackground"
делает мою среду IDE, Eclipse выдает ошибку (препятствуя компиляции), уведомляя меня, что selectableItemBackground предназначен только для минут Api 11 и выше.
Как добавить этот атрибут в фон в XML?
Предположим, что копирование и вставка из более высокой библиотеки не является решением
Ответы
Ответ 1
Поскольку атрибут определен в библиотеке (поддержка v7), вы использовали бы его как пользовательский атрибут: без префикса android:
:
android:background="?attr/selectableItemBackground"
Ошибка, которую вы видите, указывает на то, что ?android:attr/selectableItemBackground
доступен для версий API >= 11. Правда, действительно.
Ответ 2
Здесь выбраноItemBackground. Вы можете найти его в /platforms/android -14/data/res/themes.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:state_window_focused="false" android:drawable="@color/transparent" />
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="true" android:drawable="@drawable/list_selector_background_focused" />
<item android:drawable="@color/transparent" />
</selector>
и вы можете найти чертежи в каталоге Android SDK
../platforms/android-14/data
Ответ 3
Не эксперт по этому вопросу, но, похоже, вам нужна тематическая версия на основе платформы. Официальное руководство объясняет этот процесс довольно хорошо, я думаю.
Вам нужно создать разные XML файлы для каждой версии и сохранить их в res/values-v7
, res/values-v11
и т.д. Затем используйте эти стили для своих просмотров. Что-то вроде этого:
в res/values-v7
:
<style name="LightThemeSelector" parent="android:Theme.Light">
...
</style>
в res/values-v11
:
<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
<item name="selectableItemBackground">?android:attr/selectableItemBackground</item>
...
</style>
Затем используйте стиль для представления:
<TextView
style="@style/LightThemeSelector"
android:text="@string/hello" />
Надеюсь, это поможет.
Приветствия.