在Android中,是否有办法根据视图的背景动态更改视图的颜色?
例如,如果我在带有黑色背景的ListView上有一个带有白色文本颜色的浮动 TextView,则文本颜色将清晰可见。但是,当我向下滚动时,如果ListView的下一部分具有白色背景,则TextView中的文本将不再可见,因为它是白色的白色。
Android中是否有任何方法可以更改此TextView的文本颜色,因为它会以相似/相同的颜色到达背景?
答案 0 :(得分:0)
不是很难的东西
if view.getBackground() == .RED{
yourStaff.text.setTextColor(Color.WHITE);
}
答案 1 :(得分:0)
嗯,这取决于背景的类型。
如果您正在谈论视图中的背景(linearlayout,surfaceview等),那么您必须获得textview在屏幕上的位置,并根据此时的背景颜色设置颜色。但这取决于颜色的类型。位图允许您获取特定像素:
bmp.getPixel(x, y);
然后你可以根据它确定颜色。
然而,使用SurfaceView会变得更难,因为没有本机方法。
此外,渐变填充背景使得在特定点难以获得。但是如果你使用一个视图并设置了backgroundcolor,你可以:
if (view.getBackground() == Color.RED){//View = the view with a background set using setBackground or android:background="@color or @drawable or whatever"
tv.setTextColor(Color.WHITE); //then you adjsut the textview color
}
请注意,上述示例仅在视图的背景定义为android:background或setBackground并且有颜色时才有效。使用位图时,您可以获得the pixel and the color based on that pixel