通过setBackgroundResource设置背景后,setColorFilter无效。

4

我创建了一个小程序,点击后可以循环显示ImageView的染色图片。

在布局文件中设置图片时,它可以正常工作,但是当从以下代码中设置图片时,它不起作用。

感谢任何帮助。

public class MainActivity extends Activity {

    private ImageView mPic;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPic = (ImageView) findViewById(R.id.pic);
        mPic.setBackgroundResource(R.drawable.msh);

        mPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random random=new Random();
                ColorFilter cf = new PorterDuffColorFilter(Color.argb(192, random.nextInt(255), random.nextInt(255), random.nextInt(255)),Mode.SRC_ATOP);
                mPic.setColorFilter(cf);
            }
        });
    }
}
1个回答

5

颜色过滤器应用于ImageView内容(content),而非其背景(background)。使用ImageView#setImageResource(int resId)来设置内容,颜色过滤器将被应用。

如果需要将ColorFilter添加到ImageView的背景,请尝试类似这样的代码:mPic.getBackground().setColorFilter()(假设getBackground()返回非空值)。


啊,好的。有没有可能在背景上设置颜色过滤器? - Michael Schmidt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接