Intereting Posts
Загрузить значение из dimens.xml и сделать его отрицательным Проверка программной версии приложения на Android-рынке Eclipse: Android Device Chooser – Неизвестный Android 2.3.4 Устройство Как использовать плагины для платформы в рабочем процессе приложения Cordova? Явное обращение к намерению к динамически широковещательному приемнику Android-клавиатура не открывается при использовании мультимедийных запросов Android-браузер Триггеры jQuery $ (окно) .resize () при прокрутке Почему OSX не обнаруживает Android-галактику S для отладки USB? Как получить данные предварительного просмотра камеры Android? Не удалось настроить SDK: Ошибка: модуль «приложение»: платформа «Google Inc.:Google APIs: 21» не найден GWT и Android. Ошибка сериализации Enum Заполнение дискового пространства в устройстве Android Android – sendOrderedBroadcast help Заменить пространство на Hyphen Ошибка на некоторых устройствах – не удалось найти класс com.google.android.gms.measurement.internal.zzz '

Рисованное тонирование для api <21

Можно ли сделать точечную тонировку для api <21?

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_calendar" android:tint="@color/primary" /> 

Работает отлично, но только для устройств с API21. Любое обходное решение для устройств с низкими api или поддержкой AppCompat? Не могу найти ничего.

Solutions Collecting From Web of "Рисованное тонирование для api <21"

Используйте 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 вашего приложения.

Аналогичный вопрос был задан раньше: https://stackoverflow.com/a/26533340/950427

Android Drawable Tinting поддерживается только в Android 5.0+ (API 21+). (Он говорит: « At the moment this is limited to coloring the action bar and some widgets. ).

Тематизация

Когда вы устанавливаете эти атрибуты, AppCompat автоматически передает свои значения атрибутам фреймворка API 21+. Это автоматически окрашивает строку состояния и запись задачи (рецензии).

На старых платформах AppCompat эмулирует цветную тематику, где это возможно. На данный момент это ограничивается окраской панели действий и некоторых виджетов.

А также

Виджеты

При работе на устройствах с Android 5.0 все виджеты окрашиваются с использованием атрибутов цветовой темы, о которых мы только что говорили. Есть две основные функции, которые позволяют это на Lollipop: рисовать тонирование и ссылаться на атрибуты темы (формы? Attr / foo) в drawables.

AppCompat обеспечивает аналогичное поведение в более ранних версиях Android для подмножества виджета пользовательского интерфейса:

Все, что предусмотрено панелью инструментов AppCompat (режимы действия и т. Д.). EditText Spinner CheckBox RadioButton Switch (используйте новый android.support.v7.widget.SwitchCompat) CheckedTextView. Вам не нужно делать что-либо особенное, чтобы заставить их работать, просто используйте эти элементы управления в Ваши макеты, как обычно, и AppCompat сделают все остальное (с некоторыми оговорками, см. FAQ ниже).

Источники:

http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

https://chris.banes.me/2014/10/17/appcompat-v21/

Не могли бы вы просто использовать 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" /> 

Теперь AppCompatImageView, AppCompatButton заменит ImageView, Button, чтобы поддерживать оттенок на устройствах с более низким API. Проверьте ссылку для получения дополнительной информации AppCompatImageView , AppCompatButton

Вы можете добиться этого с помощью исходного кода. Ранее тонирование не поддерживалось 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.setColorFilter(int color) . Это работает с API 8 и работает для тонирования моего черного изображения до цвета, который я хотел. Это может заменить setImageTintList() но просто использовать android:tint также должен работать.