Сделать зависимую от API ссылку на стиль темы

API 21+:

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

API №21:

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

Как это возможно?


Я знаю решение, в котором используется "?attr/API_dependent_theme_reference", например это. К сожалению, это не работает для макета виджета приложения.

Кроме того, я знаю, что решение использует style="..." для view и несколько определений стилей в папках values и values-v21. Но ищем способ напрямую назначить свойство background (тем более, что Android, к сожалению, не поддерживает назначение нескольких стилей, таких как CSS: class="style1 style2 etc"!).


person Mir-Ismaili    schedule 11.02.2017    source источник


Ответы (1)


У вас может быть два пользовательских чертежа

Drawable/backround_name.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="?android:attr/selectableItemBackground"
</layer-list>

а также

drawable-v21/backround_name.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="?android:attr/selectableItemBackgroundBorderless"
</layer-list>
person MaxV    schedule 11.02.2017
comment
Спасибо за ответ. Но, к сожалению, использование ссылок на темы в XML-рисунках само по себе требует уровня API 21. См. это сообщение без ответа. Если кто-нибудь может ответить на этот вопрос, ваш ответ будет правильным автоматически :). - person Mir-Ismaili; 12.02.2017