gpt4 book ai didi

android - 获取当前背景

转载 作者:搜寻专家 更新时间:2023-11-01 07:55:56 24 4
gpt4 key购买 nike

我想获取当前背景以根据它做一个条件。例如,我有一个带有下一个箭头的 xml,如果 background=R.drawable.A,我想在按下下一个按钮时将背景更改为 R.drawable.B。

我定义了我的相对布局如下:

final RelativeLayout rl = (RelativeLayout) findViewById(R.id.myLayout);

if (rl.getBackground()== R.drawable.A){ //here the error
rl.setBackgroundResource(R.drawable.B);
}

错误是:不兼容的操作数类型 int 和 drawable。有没有办法得到当前的背景,并以此为基础做点什么?

最佳答案

其实我不知道他们为什么不重写Drawable中的equals方法类(class)。所以你应该使用 getConstantState()来自返回 Drawable.ConstantState 的 Drawable 对象的方法保存此 Drawable 的共享状态以便能够对其进行比较的实例。

Kotlin

val drawableAConstantState = ContextCompat.getDrawable(this, R.drawable.A)?.constantState
rl.setBackgroundResource(if (rl.background?.constantState == drawableAConstantState) R.drawable.B else R.drawable.A)

Java

if (rl.getBackground() != null && rl.getBackground().getConstantState().equals(getResources().getDrawable(R.drawable.A).getConstantState()) {
rl.setBackgroundResource(R.drawable.B);
} else {
rl.setBackgroundResource(R.drawable.A);
}

关于android - 获取当前背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730731/

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