假设我们有自定义ListView
,它通过在其中绘制一些矩形来扩展onDraw()
方法。如何覆盖特定区域的列表项文字颜色?
class Listpicker extends ListView {
//..Some other methods here..//
@Override
protected void onDraw(android.graphics.Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(glassPickerBitmap, null, glassRect, semiTransparrentPaint);
}
}
绘制位图代表某种玻璃中的哪一个矩形与宽度等于ListView和一些高度的宽度。我想要的是,当列表项滚动到这个矩形中时,用于绘制文本的颜色(并非所有具有背景等的项目)都会变成另一种颜色。因此,例如,当列表项适合只有文本的一半高度符合glassPickerBitmap
时,列表项的外部部分应保持其顺序颜色,并且glassPickerBitmap
内部的部分应更改其文本颜色。列表项是简单的TextViews,没有任何背景。
这怎么能实现?也许ColorFilter
被分配到Paint
?但是哪里? onDraw()
方法Listview
甚至在ListView
被滚动时不会调用...可以在定制视图内完成这个操作,例如,这将是ListView
的项目?或者可能是一些颜色/着色器/不知道可以在这里使用什么覆盖图,但是其中?
编辑(添加的图像的例子):
这里是例如从现实生活中的应用中的一些作物。有2 ListView
s:一个在左侧,另一个在右侧。玻璃是灰色的矩形。现在,左侧列表中有“美元”货币选中。我正在以这种方式滚动ListView
,该选择介于USD和阿富汗阿富汗尼之间。现在,我想要的是,USD左边的ListView
中的货币将被绘制成红色(确切的颜色现在无关紧要,我会稍后将其更改为有意义的东西),同时,的底部部分“美元”和顶部的“阿富汗阿富汗尼”在右侧的ListView中也会以相同的红色绘制。
这种颜色变化应该在动态的方式来完成 - 颜色应该只对文本的一部分是列表的滚动过程在玻璃下的矩形改变。
*确定,欧元和美元是用非标准青色绘制的特殊货币。问题是至少与文本白色颜色。但是,如果能够改变青色的话,那就太好了。
'View.setWillNotDraw'(布尔willNotDraw)应该得到'onDraw'堪称'ListView'。无论那么就会使你达到你想要的东西是值得商榷的。但有趣的问题。 – techiServices
@Prizoff可以提供两张图片(常规项目和玻璃下方的其他项目)? – eveliotc
@EvelioTarazona完成 – Prizoff