নোট : উত্তর দৃশ্যকল্প যেখানে আবরণ আপডেট করা হয়েছে background
এর একটি দৃষ্টান্ত হল ColorDrawable
। এটি উল্লেখ করার জন্য ধন্যবাদ টাইলার ফাফফ ।
অঙ্কনযোগ্য একটি ডিম্বাকৃতি এবং একটি চিত্রভিউয়ের পটভূমি
পান 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()
অন্য কারও ব্যবহৃত হয় যদি পরিবর্তনযোগ্যদের আগে তাদের পরিবর্তন করার আগে তাদের ব্যবহার করা উচিত । (ডিফল্টরূপে, এক্সএমএল থেকে লোডযোগ্য আঁকাগুলি একই অবস্থায় ভাগ করে।