<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#666666" /> <size android:width="8dp" android:height="8dp" /> </shape>
<ImageView android:id="@+id/imageViewStep2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="4dp" android:layout_marginRight="4dp" android:background="@drawable/ic_stepper" android:contentDescription="@string/step_2" />
Drawable background = imageViewStep1.getBackground(); if (background instanceof ShapeDrawable) { // cast to 'ShapeDrawable' ShapeDrawable shapeDrawable = (ShapeDrawable) background; shapeDrawable.getPaint().setColor(ContextCompat.getColor(this, R.color.md_blue_500)); } else if (background instanceof GradientDrawable) { // cast to 'GradientDrawable' GradientDrawable gradientDrawable = (GradientDrawable) background; gradientDrawable.setColor(ContextCompat.getColor(this, R.color.md_blue_500)); } else if (background instanceof ColorDrawable) { // alpha value may need to be set again after this call ColorDrawable colorDrawable = (ColorDrawable) background; colorDrawable.setColor(ContextCompat.getColor(this, R.color.md_blue_500)); }
References
https://stackoverflow.com/questions/17823451/set-android-shape-color-programmatically