Hey to use vector drawables on android below lollipop you need to place the images from your code here are a few functions that should help you do whatever you want
public static enum DrawablePosition {
Left, Right, Top, Bottom
}
public static Drawable getDrawable(Context context, int drawable) {
return DrawableCompat.wrap(VectorDrawableCompat.create(context.getResources(), drawable, null));
}
public static Drawable getDrawableWithColor(Context context, int drawableResId, int IntColorOfDrawable) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), drawableResId, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, IntColorOfDrawable);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
return drawable;
}
public static void setDrawableWithColorForIds(AppCompatActivity activity, int color, int[] ids, int drawable[]) {
for (int i = 0; i != ids.length; i++) {
Drawable drawable1 = VectorDrawableCompat.create(activity.getResources(), drawable[i], null);
DrawableCompat.wrap(drawable1);
DrawableCompat.setTint(drawable1, color);
DrawableCompat.setTintMode(drawable1, PorterDuff.Mode.SRC_IN);
((TextView) activity.findViewById(ids[i])).setCompoundDrawablesWithIntrinsicBounds(drawable1, null, null, null);
}
}
public static void placeVectorOnTextView(Context context, TextView textView, int vectorDrawableResID, @Nullable Integer VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
if (VectorColor != null){
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
}
switch (position) {
case Left:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
textView.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnEditText(Context context, EditText editText, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
editText.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
editText.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnButton(Context context, Button button, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
button.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
button.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
button.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnRadioButton(Context context, RadioButton radioButton, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
radioButton.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
radioButton.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
radioButton.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
radioButton.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnCheckBox(Context context, CheckBox checkBox, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
checkBox.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
checkBox.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
checkBox.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
checkBox.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}