Android ImageButton setColorFilter不工作

时间:2015-02-26 05:03:43

标签: android android-imagebutton

我已经找到了回答这个问题的帖子,但是没有一个能为我工作,所以我认为我对它应该如何运作有一个根本的误解。我有一个ImageButton,它有一个png文件。除白色箭头外,png大多是透明的。我想用setColorFilter:

给箭头着色
imageButton.setColorFilter(Color.argb(255, 225, 0, 0));

但这没有任何影响。我已尝试使用各种Porter-Duff模式的setColorFilter版本,但这些都没有。关于问题可能是什么或者我可能缺少什么的任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:12)

您必须从按钮获取Drawable,因为您尝试使用的setColorFilter(在您的设置中)适用于那些。

ImageButton btn = (ImageButton) myLayout.findViewByID(R.id.my_button);

int mycolor = getResources().getColor(R.color.best_color);

btn.getDrawable().setColorFilter(mycolor, PorterDuff.Mode.SRC_ATOP);

只要您对Drawable对象有正确的引用,

e.g. textView.getCompoundDrawables()[2].setColorFilter(...);

在xml:

<TextView
...
android:drawableLeft="..." 
...
 />

你可以完全喜欢使用myDrawableObject.setColorFilter()。

编辑:

对于ImageButton,imageButton.getDrawable()的drawable对应android:src="...",而imageButton.getBackground()对应android:background="..."属性。确保在正确的drawable上调用setColorFilter。

答案 1 :(得分:1)

派对超级晚了,但万一其他人遇到这个问题

我发现如果您以编程方式创建ImageView,请在设置滤镜之前使用ImageView imageView = new ImageView(this); imageView.setColorFilter(Color.WHITE);

WONT WORK:

ImageView imageView = new ImageView(context);

imageView.post(new Runnable() {
    @Override
    public void run() {
        imageView.setColorFilter(Color.WHITE);
    }
});

将继续

iframe {
    transform: scale(.3);
    transform-origin: 0 0;
}