gpt4 book ai didi

android - Xamarin,Android : ImageView. SetColorFilter() 对我的 ImageView 没有任何影响?

转载 作者:行者123 更新时间:2023-11-29 16:46:38 28 4
gpt4 key购买 nike

我有一个使用 alpha channel 的 imageView,它是圆形的,基本上只由黑色轮廓组成。但是,在一个简单的实例中,我需要将 imageview 显示为白色而不是黑色。其他一切都需要保持不变。经过一番谷歌搜索后,这就是我想出的:

ImageButton btnHeader = new ImageButton(this);
btnHeader.SetBackgroundResource(Resource.Drawable.mainmenu_btn_news_bol);
btnHeader.SetColorFilter(new Color(Color.White), PorterDuff.Mode.SrcIn);

这至少应该对 ImageView 有一些影响,但事实并非如此。就像第 3 行代码刚刚被跳转一样。任何人都可以向我解释这是错误还是我?

最佳答案

直接在 ImageButton 上设置颜色过滤器只会影响其源图像,不会影响背景。也就是说,它将影响那些使用 SetImage*() 方法设置的图像。如果这就是您的意思,那么只需将 SetBackgroundResource() 调用更改为 SetImageResource()

相反,如果您尝试专门过滤背景,则需要直接在背景 Drawable 上设置过滤器。例如:

btnHeader.Background.SetColorFilter(new Color(Color.White), PorterDuff.Mode.SrcIn);

此外,默认情况下,从同一资源创建的单独 Drawable 将共享一个公共(public)状态,因此如果您有多个使用同一资源图像的 View,则设置一个过滤器也会影响所有其他过滤器。您可以强制为特定的 Drawable 创建一个新的独立状态,方法是在应用过滤器之前先对其调用 Mutate()。例如,背景图片:

btnHeader.Background.Mutate().SetColorFilter(new Color(Color.White), PorterDuff.Mode.SrcIn);

关于android - Xamarin,Android : ImageView. SetColorFilter() 对我的 ImageView 没有任何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47715227/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com