假设我们有通过在其中绘制一些矩形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);
}
}
绘制的位图代表某种玻璃,它是矩形,宽度等于列表视图的宽度和一些高度。我想要的是当列表项滚动到此矩形中时,用于绘制文本的颜色(并非所有具有背景等的项)将更改为另一种颜色。因此,例如,当列表项适合以便只有一半高度的文本适合 时glassPickerBitmap
,列表项的外部部分应保持其序号颜色,而内部部分glassPickerBitmap
应更改其文本颜色。列表项是没有任何背景的简单 TextView。
这怎么可能实现?也许任何ColorFilter
s 分配给Paint
? 但是哪里?滚动时甚至不调用onDraw()
方法...可以在自定义视图中完成,例如,那将是's 项目?或者可能是一些颜色/着色器/不知道这里还可以使用什么叠加层,但是在哪里?Listview
ListView
ListView
编辑(添加图像示例):
这是来自现实应用程序的一些作物的示例。有 2ListView
秒:一个在左侧,另一个在右侧。玻璃是灰色的矩形。现在,左侧列表已选择“美国美元”货币。我ListView
以这种方式向右滚动,该选择介于USD和Afghan Afghani之间。现在,我想要的是左侧的美元货币ListView
将被绘制为红色(现在确切的颜色无关紧要,我稍后将其更改为有意义的东西)并且同时,“美国美元”的底部”和右侧 ListView 中“阿富汗阿富汗尼”的顶部也将用相同的红色绘制。
此颜色更改应以动态方式完成 - 仅应在列表滚动期间更改位于玻璃矩形下方的文本部分的颜色。
*好的,这里的欧元和美元是用非标准青色绘制的特殊货币。问题至少是关于白色的文本。但是,如果也可以更改青色,那就太好了。