Примечание: Ответ был обновлен, чтобы покрыть ситуацию, когда background
является экземпляром ColorDrawable
. Спасибо Tyler Pfaff, для указания этого.
вытяжке овальный и является фоном из ImageView
Получить Drawable
от imageView
с помощью getBackground()
:
Drawable background = imageView.getBackground();
Проверка против обычных подозреваемых:
if (background instanceof ShapeDrawable) {
// cast to 'ShapeDrawable'
ShapeDrawable shapeDrawable = (ShapeDrawable) background;
shapeDrawable.getPaint().setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
} else if (background instanceof GradientDrawable) {
// cast to 'GradientDrawable'
GradientDrawable gradientDrawable = (GradientDrawable) background;
gradientDrawable.setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
} else if (background instanceof ColorDrawable) {
// alpha value may need to be set again after this call
ColorDrawable colorDrawable = (ColorDrawable) background;
colorDrawable.setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
}
Компактное исполнение:
Drawable background = imageView.getBackground();
if (background instanceof ShapeDrawable) {
((ShapeDrawable)background).getPaint().setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
} else if (background instanceof GradientDrawable) {
((GradientDrawable)background).setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
} else if (background instanceof ColorDrawable) {
((ColorDrawable)background).setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
}
Обратите внимание, что проверка не требуется.
Однако вы должны использовать mutate()
на чертежах перед их модификацией, если они используются в другом месте. (По умолчанию, вводимого коэффициента загружается из доли XML в том же состоянии.)
Что вы можете установить для этого? – Vikram
Выбираемый является «овальным» и является фоном ImageView. –
Если этот вопрос задан слишком сложно, есть ли способ нарисовать несколько изображений на холсте и установить многоуровневый конечный продукт в качестве фона представления? –