gpt4 book ai didi

android - 在 Android 上为 CheckBox 和 RadioButton 着色

转载 作者:行者123 更新时间:2023-11-29 00:43:13 24 4
gpt4 key购买 nike

我有一个 Android 天文学应用程序,我需要将 UI 染成红色以便在晚上使用。尽管我有一个适用于许多(大多数??)UI 元素的方案,但我在使用 CompoundButtons:CheckBox 和 RadioButton 时遇到了问题。

基本思想是检索 UI 元素的 Drawable,如果它有一个,则在其上设置颜色过滤器。我的问题是为复合按钮找到合适的 Drawable。我认为 getCompoundDrawables() 将是我需要的,但是 4 个可绘制对象的返回数组始终包含 4 个元素的空值。

这是我在顶层 View 上调用的递归代码,用于尝试为 UI 元素着色。

public static void setNightVisionBkg( View view )
{
if ( view instanceof ViewGroup )
{
Drawable drawable = view.getBackground();
if ( drawable != null )
drawable.setColorFilter( 0xFFAA0000, PorterDuff.Mode.MULTIPLY );

ViewGroup group = (ViewGroup) view;
int numChildren = group.getChildCount();
for ( int i = 0; i < numChildren; i++ )
{
View v = group.getChildAt( i );
Drawable d = v.getBackground();
if ( d != null )
d.setColorFilter( 0xFFAA0000, PorterDuff.Mode.MULTIPLY );

if ( v instanceof ViewGroup )
{
setNightVisionBkg( (ViewGroup) v );
}
else if (v instanceof CompoundButton)
{
CompoundButton compBtn = (CompoundButton)v;
Drawable drawables[] = compBtn.getCompoundDrawables();
for (int j = 0; j < drawables.length; j++)
if (drawables[j] != null)
{
drawables[j].setColorFilter( 0xFFAA0000, PorterDuff.Mode.MULTIPLY );
}
}
}
}
}

请注意,在后半部分,它正在获取无法正常工作的 CompoundButton 的可绘制对象(所有可绘制对象均为空)。

关于如何做到这一点有什么想法吗?我知道我可以设置自己的自定义可绘制对象,但我更愿意使用标准的可绘制对象,并尽可能设置一个 colorFilter。

最佳答案

我以稍微不同的方式解决了我的问题。结束了 CheckBox(和 RadioButton)的子类化。在我覆盖的子类中:

protected boolean verifyDrawable( Drawable drawable )

在这个方法中,我在可绘制对象上设置了 colorFilter。效果很好。

关于android - 在 Android 上为 CheckBox 和 RadioButton 着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138441/

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