在我的测试中,我想确保一个视图(不是ImageView)具有特定的背景颜色。我该如何直接与相关的视图交互来实现这一目标?
这个视图的背景不是Drawable。它可能是在XML中设置的,也可能是使用view.setBackgroundColor(...)设置的。
这个视图的背景不是Drawable。它可能是在XML中设置的,也可能是使用view.setBackgroundColor(...)设置的。
这将需要您进行一些重构,但是您可以使用setBackgroundDrawable()而不是使用setBackgroundColor(),并传递一个ColorDrawable的实例。这实际上并不比您之前所做的更费力,而且ColorDrawable让您设置其颜色,并在执行测试时稍后获取它。所有View对象都响应getBackground()方法,该方法返回该实例的Drawable。
这对您应该有效,并且不会增加任何开销,因为即使您调用setBackgroundColor,Android也需要为您创建一个Drawable。
Drawable drawable = view.getBackground();
我怎样才能从可绘制对象中恢复颜色(或资源ID)?我知道我可以恢复不透明度,但我不知道如何恢复颜色,并且我认为恢复资源ID是不可能的。 - Peter AjtaiException
:java.lang.ClassCastException: android.graphics.drawable.RippleDrawable cannot be cast to android.graphics.drawable.ColorDrawable
。 - Albert Vila Calvo您可以使用此功能来获取TextView的背景颜色。
yourTextView.getBackgroundResource(R.color.white);
其中color.xml在res/values文件夹中定义
<color name="white">#ffffffff</color>