我已经找到了回答这个问题的帖子,但是没有一个能为我工作,所以我认为我对它应该如何运作有一个根本的误解。我有一个ImageButton,它有一个png文件。除白色箭头外,png大多是透明的。我想用setColorFilter:
给箭头着色imageButton.setColorFilter(Color.argb(255, 225, 0, 0));
但这没有任何影响。我已尝试使用各种Porter-Duff模式的setColorFilter版本,但这些都没有。关于问题可能是什么或者我可能缺少什么的任何想法都将不胜感激。
答案 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;
}