安卓 - 如何以编程方式设置AlertDialog图标的颜色?

6

我希望能够通过编程将图标的颜色设置为不同的颜色,以便使用相同的图标(即矢量),就像我们通过android:tint属性一样。

这是设置AlertDialog图标的builder

builder.setIcon(android.R.drawable.ic_dialog_info);

有没有办法做到这一点?如果我们只想使用不同的颜色,是否需要再次创建相同的图标?

1个回答

1
您可以获取ImageView并设置ColorFilter。尝试下面的代码。看看是否按预期工作。
            AlertDialog.Builder builder = new AlertDialog.Builder(DemoActivity.this);
            builder.setMessage("Message");
            builder.setTitle("Title");
            builder.setIcon(android.R.drawable.ic_dialog_info);
            AlertDialog dialog = builder.create();
            dialog.show();
            ImageView imageView = dialog.findViewById(android.R.id.icon);
            if (imageView != null)
                imageView.setColorFilter(Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);

无法使用自定义颜色。当我使用BLUE作为颜色时,它可以正常工作。但是当我尝试使用在我的colors.xml中定义的自定义颜色(#fbcb97)时,显示的颜色与预期的不同。 - talha06
我已经在Android O上使用了您的颜色代码进行了测试,它可以正常工作。它似乎有点更加alpha,但我认为这是因为颜色本身就有这个特性。您正在哪个版本上进行测试? - ADM
我通过截屏获取的颜色的十六进制代码是 #838093。在 API Level 26 上进行测试。 - talha06

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