在我正在开发的一个应用程序中,我试图以编程方式创建一个ImageButtonselected 的副本ImageButton,但图像以不同的方式着色,比如说红色。
如果我使用PowerDuff.Mode.MULTIPLY:
clonebutton.getDrawable().setColorFilter(0xFFFF0000,Mode.MULTIPLY);
然后即使是原件也ImageButton将其颜色变为红色,因为它们共享相同的drawable. 有没有办法只在 clonebutton 上应用过滤器而不使用两个不同的drawables?例如,是否可以在不编辑的情况下以某种方式在 clonebutton 顶部放置一个着色层drawable?
更新 我将drawable设置为可变:
Drawable d = swipebutton.getDrawable();
d.mutate();
d.setColorFilter(0xFFFF0000,Mode.MULTIPLY);
swipebutton.setImageDrawable(d);
这可以防止我的 clonebutton 将其状态共享drawable给其他views.