假設我們有自定義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