0
我使用自定義ListFieldCallback爲BlackBerry應用程序實現了ListField。它運行良好,除了兩個問題:在BlackBerry ListField中繪製邊框
首先,我指定的位圖只繪製在第一行。它並沒有畫在任何其他的行之後(然而,文字畫得很好)。
其次,我想圍繞當前選定的ListField元素繪製藍色邊框。爲此,我重寫了ListField的drawFocus()以不包含任何內容,並且我還將ListField設置爲在navigationMovement()方法上無效()。邊界正在繪製在第一行,但沒有任何其他。任何人都可以找出原因嗎?這裏是我的相關代碼:
的ListField實例:
ListField lf = new ListField() {
protected void drawFocus(Graphics graphics, boolean on) {
}
protected boolean navigationMovement(int dx, int dy,
int status, int time) {
this.invalidate(this.getSelectedIndex());
return super.navigationMovement(dx, dy, status, time);
}
protected boolean navigationClick(int status, int time) {
return true;
}
};
lf.setEmptyString("No items.", DrawStyle.HCENTER);
_callback = new ListCallback(vector, Bitmap
.getBitmapResource("image.png"));
lf.setCallback(_callback);
add(lf);
lf.setSize(vector.size());
定製ListField回調:
if (index == list.getSelectedIndex()) {
g.setColor(0x4096cc);
g.drawBitmap(5, (bitmapHeight - fontHeight) * 2,
_bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0, 0);
g.drawText(text, _bitmap.getWidth() + 15,
y, 0, w);
g.drawRect(0, 0, list.getWidth(), list.getRowHeight());
} else {
g.setColor(0x4096cc);
g.drawBitmap(5, (bitmapHeight - fontHeight) * 2,
_bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0, 0);
g.drawText(text, _bitmap.getWidth() + 15,
y, 0, w);
}
謝謝!
你說得對,修復我的drawBitmap()和drawRect()來利用y就是了。謝謝! – littleK 2011-01-31 17:57:06