gpt4 book ai didi

Android:更改 View 中的背景选择器资源不会更新

转载 作者:行者123 更新时间:2023-11-29 21:03:40 25 4
gpt4 key购买 nike

这个问题看起来很简单,我在 Android 源代码中四处寻找,但问题的原因并不明显。

实际上,这就是我在做的

if(condition) {
view.setBackgroundResource(R.drawable.selector1);
}else {
view.setBackgroundResource(R.drawable.selector2);
}

View 不在列表中但被重用。如果我在单击事件期间进行了此更改,并且我在选择器资源中定义了 enterFadeDurationexitFadeDuration,则会呈现适当的可绘制对象(我假设动画强制重绘).但是,如果我在隐藏 View 时进行此更改,然后将可见性设置为可见,则不会绘制更新的选择器。随后,如果我按下 View ,选择器就会正确呈现。

我的猜测是 Android 优化阻止了后台资源的更新。在设置新的背景选择器后,我尝试了明显的选项,例如 invalidate()requestLayout()。还有另一种方法可以强制 View 使用新的背景选择器进行更新吗?

注意:仅在 KitKat (4.4.4) 上测试

最佳答案

您可能不会通过 UI 线程更改背景。试试这个:

runOnUiThread(new Runnable() {
@Override
public void run() {
if (condition) {
view.setBackgroundResource(R.drawable.selector1);
} else {
view.setBackgroundResource(R.drawable.selector2);
}
}
});

关于Android:更改 View 中的背景选择器资源不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196433/

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