如何确定TextView的背景颜色?

3
在我的测试中,我想确保一个视图(不是ImageView)具有特定的背景颜色。我该如何直接与相关的视图交互来实现这一目标?
这个视图的背景不是Drawable。它可能是在XML中设置的,也可能是使用view.setBackgroundColor(...)设置的。

可能是如何获取TextView的背景颜色?的重复问题。 - Albert Vila Calvo
3个回答

1

这将需要您进行一些重构,但是您可以使用setBackgroundDrawable()而不是使用setBackgroundColor(),并传递一个ColorDrawable的实例。这实际上并不比您之前所做的更费力,而且ColorDrawable让您设置其颜色,并在执行测试时稍后获取它。所有View对象都响应getBackground()方法,该方法返回该实例的Drawable。

这对您应该有效,并且不会增加任何开销,因为即使您调用setBackgroundColor,Android也需要为您创建一个Drawable。


但是我如何确定可绘制对象的颜色呢?或者我得到了哪个可绘制对象呢?换句话说,如果我做了这个:Drawable drawable = view.getBackground(); 我怎样才能从可绘制对象中恢复颜色(或资源ID)?我知道我可以恢复不透明度,但我不知道如何恢复颜色,并且我认为恢复资源ID是不可能的。 - Peter Ajtai
谢谢,我会尝试一下。您应该将第二个回复添加到此回复中,并删除第二个回复。 - Peter Ajtai

1
ColorDrawable有一个getColor()方法,返回表示其颜色的int值。当您创建ColorDrawable对象时,您将调用setColor()来设置背景颜色。现在,您可以比较两个int颜色值,以查看它们是否相等。您需要将其强制转换为ColorDrawable,而不是Drawable接口。
ColorDrawable drawable = (ColorDrawable)view.getBackground();

1
请注意:这可能会引发 Exceptionjava.lang.ClassCastException: android.graphics.drawable.RippleDrawable cannot be cast to android.graphics.drawable.ColorDrawable - Albert Vila Calvo

0

您可以使用此功能来获取TextView的背景颜色。

yourTextView.getBackgroundResource(R.color.white);

其中color.xml在res/values文件夹中定义

<color name="white">#ffffffff</color>


2
只有当我们对textView可能具有的颜色有想法时,才可以使用这种技术。 - Abhijit Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接