动态更改视图的颜色取决于视图所处的背景颜色

时间:2017-04-28 01:39:12

标签: android listview colors

在Android中,是否有办法根据视图的背景动态更改视图的颜色?

例如,如果我在带有黑色背景的ListView上有一个带有白色文本颜色的浮动 TextView,则文本颜色将清晰可见。但是,当我向下滚动时,如果ListView的下一部分具有白色背景,则TextView中的文本将不再可见,因为它是白色的白色。

Android中是否有任何方法可以更改此TextView的文本颜色,因为它会以相似/相同的颜色到达背景?

2 个答案:

答案 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