Добавьте последнюю версию библиотеки поддержки в build.gradle
зависимости вашего приложения:
compile 'com.android.support:appcompat-v7:26.0.2'
и добавьте следующую строку в тот же файл:
android {
...
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
...
}
Импортируйте векторное изображение через Vector Asset Studio.
Все готово!
ImageView
XML
Используйте атрибут app:srcCompat
вместо android:src
:
<ImageView
...
app:srcCompat="@drawable/your_vector"
... />
Программно
Непосредственно из идентификатора ресурса:
imageView.setImageResource(R.drawable.your_drawable);
Установить как Drawable
объект (например, для тонирования):
Drawable vectorDrawable
= AppCompatResources.getDrawable(context, R.drawable.your_vector);
imageView.setImageDrawable(vectorDrawable);
И если вы хотите установить оттенок:
DrawableCompat.setTint
(vectorDrawable, ContextCompat.getColor(context, R.color.your_color));
TextView рисуемый
XML
Простого решения нет: XML-атрибут android:drawableTop(Bottom etc)
не может обрабатывать векторные изображения в pre-Lollipop. Одним из решений является добавление блока инициализатора в действие. и оберните вектор в другой рисуемый XML. Во-вторых, для определения пользовательского TextView.
Программно
Установка ресурса напрямую не работает, вы должны использовать объект Drawable
. Получите его так же, как и для ImageView
, и установите его соответствующим методом:
textView.setCompoundDrawablesWithIntrinsicBounds(vectorDrawable, null, null, null);
Значок меню
Ничего особенного:
<item
...
android:icon="@drawable/your_vector"
... />
menuItem.setIcon(R.drawable.your_vector);
Уведомления:
Это невозможно, вы должны использовать PNG :(
person
Maksim Ostrovidov
schedule
18.11.2016