Мешочки тонировки для API
можно ли сделать рисованную тонировку для api
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_calendar"
android:tint="@color/primary" />
работает просто отлично, но только для устройств с API21. Любой обходной путь для более низких устройств api или поддержки AppCompat? Ничего не могу найти.
7 ответов:
использовать
AppCompatImageView
вот так:<android.support.v7.widget.AppCompatImageView android:id="@+id/my_appcompat_imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_image" android:tint="#636363" />
убедитесь, что у вас есть последний
appcompat-v7
в вашем приложенииbuild.gradle
.пример:
compile 'com.android.support:appcompat-v7:25.0.0'
в вашем приложенииbuild.gradle
.
вы можете достичь этого с помощью исходного кода. Ранее тонировка не поддерживалась
DrawableCompat
. Начиная с библиотеки поддержки 22.1 вы можете сделать это, но вам нужно сделать это следующим образом:Drawable normalDrawable = getResources().getDrawable(R.drawable.drawable_to_tint); Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.colorPrimaryLight));
не могли бы вы просто использовать ImageView для отображения вашего Drawable?
android:tint
отлично работает на старых уровнях API.<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_calendar" android:tint="@color/primary" />
подобный вопрос был задан ранее здесь:https://stackoverflow.com/a/26533340/950427
android Drawable тонировка поддерживается только в Android 5.0+ (API 21+). (Он действительно говорит"
At the moment this is limited to coloring the action bar and some widgets.
").Theming
...
когда вы устанавливаете эти атрибуты, AppCompat автоматически распространяется их значения для атрибутов фреймворка на API 21+. этот автоматически окрашивает строку состояния и Обзор (последние) запись задачи.
на старых платформах AppCompat эмулирует цветовую тематику, где вероятный. На данный момент это ограничивается раскраски и некоторые виджеты.
и
виджет тонировка
при запуске на устройствах с Android 5.0, все виджеты тонируются с помощью атрибутов цветовой темы, о которых мы только что говорили о. есть две основные особенности которые позволяют это на леденец: рисуемая тонировка и ссылки на атрибуты темы (формы ?attr / foo) в чертежах.
AppCompat обеспечивает аналогичное поведение на более ранних версиях Android для подмножества виджетов пользовательского интерфейса:
все, что предусмотрено панелью инструментов AppCompat (режимы действий и т. д) EditText Spinner флажок RadioButton переключатель (использовать новый андроид.поддержка.v7.штучка.SwitchCompat) CheckedTextView вам не нужен чтобы сделать что-то особенное, чтобы сделать это работы, просто используйте эти элементы управления в ваши макеты, как обычно, и AppCompat сделает все остальное (с некоторыми оговорками; см. справку ниже).
источники:
http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
теперь AppCompatImageView, AppCompatButton заменит ImageView, кнопка для поддержки оттенка на устройствах с более низким API. Проверьте ссылку для получения более подробной информации AppCompatImageView, AppCompatButton