gpt4 book ai didi

Android 按钮 setColorFilter 行为

转载 作者:太空狗 更新时间:2023-10-29 15:35:28 33 4
gpt4 key购买 nike

(我稍微改变了问题,因为现在问题更清楚了)

我的应用程序上有 4 个按钮,当用户单击某个按钮时我更改了该按钮的颜色。

单击按钮 3 时,我想将他的颜色更改为绿色,否则我想删除他的绿色滤镜(单击按钮 1/2/4 时)。如果我点击按钮 3,它会得到绿色滤镜。如果然后我单击按钮 4,它会删除绿色过滤器,但如果我单击按钮 1 或 2,则没有任何反应。当我在 XML 中切换按钮的位置,并将 button3 放在第一位时,它没有发生,想法?

布局xml的相关部分是:

<Button
android:id="@+id/ans1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/ans2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/ans3"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/ans4"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

代码是:

if (answer.equals("3")) 
{
question.setText("In if");
d.setColorFilter(filter);
}
else
{
question.setText("else");
d.setColorFilter(null);
}

最佳答案

我似乎记得以前在创建太多 ColorFilters 时遇到过问题。听起来肯定不是这里的问题所在,因为它马上就会发生。不过,您可能会尝试将过滤器作为类变量,然后在 if/else block 中使用它。另外,正如 Trev 所提到的,由于您只想删除绿色滤镜,您可以将 null 传递给 setColorFilter 并避免制作透明滤镜,所以您最终会得到这样的结果:

//in main class
PorterDuffColorFilter greenFilter =
new PorterDuffColorFilter(Color.GREEN, PorterDuff.Mode.SRC_ATOP);

//in CheckAnswer()
Drawable d = findViewById(R.id.ans2).getBackground();

if(answer.equals("1") d.setColorFilter(greenFilter)
else d.setColorFilter(null);

关于Android 按钮 setColorFilter 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702521/

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