Это похоже на ошибку (я сталкивался с ней в эмуляторах и устройствах под управлением Android 6): отрисовка отрисовывается, но атрибут стиля <item name="android:drawableTint">?colorPrimary</item>
не имеет никакого эффекта, поэтому отрисовка белая.
Вы можете проверить это, изменив android:fillColor="#FFFFFF"
на android:fillColor="#000000"
в пути прорисовываемого вектора.
Так что вам придется программно установить цвет для более низких уровней Api:
Для Android 6 вы можете ввести файл цветовых ресурсов res / color / my_button_tint.xml , определяющий ColorStateList
.Поскольку вам нужен только один цвет, достаточно одного элемента в структуре селектора.Но у вас может быть больше цветов в зависимости от состояния Button
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/colorPrimary"/>
</selector>
Теперь вы можете написать
if(Build.VERSION.SDK_INT == Build.VERSION_CODES.M){
Context ctx = myButton.getContext(); // use any available Context here
ColorStateList csl = ContextCompat.getColorStateList(ctx, R.color.my_button_tint);
myButton.setCompoundDrawableTintList(csl);
}
Для более низких уровней API вы можете изменитьцвет Drawable
, применив ColorFilter
, см., например, этот пост
Или просто измените android:fillColor="#ffffff"
на пути вектора, который можно нарисовать, до желаемого цвета.