更改黑莓ListField的高光(焦点)颜色的最佳方法是什么,我使用了drawFocus方法,它确实突出了它,但它的性能太慢而不能继续
drawlistrow中的代码
Item item = (Item)this.listData.elementAt(this.getSelectedIndex());
g.drawText (item.getItemNumber(), 2, y, Graphics.LEFT,20);
g.drawText (item.getDescription(), 25, y, Graphics.LEFT,30);
g.drawText (item.getItemType(), 60, y, Graphics.LEFT,15);
g.setColor(0xC4C3C4);
g.drawLine(2, y, 2, 115);
答案 0 :(得分:1)
您可以使用以下代码
设置列表字段高亮颜色if (g.isDrawingStyleSet(Graphics.DRAWSTYLE_FOCUS)) {
//change focus color
g.setBackgroundColor(MyColors.LIGHT_GRAY);
g.clear();
//draw text
g.setFont(boldTextFont);
g.setColor(MyColors.White);
g.drawText(text, 12, y);
}
添加你的drawlistrow代码,以便我们可以帮助你提高性能。
答案 1 :(得分:0)
为此屏幕创建一个boolean
。 boolean _inFocus = false;
。然后在Listfield
构造函数中添加两个方法(onfocus,onunfocus)。protected void onFocus(int direction)
{
_inFocus = true;
super.onFocus(direction);
}
protected void onUnfocus()
{
_inFocus = false;
super.onUnfocus();
}
。
在drawListRow
方法中写下以下方法。在下面的方法中,我们将检查该行是否可聚焦。
if(_inFocus)
{
if(listField.getSelectedIndex() == index)
{
g.setGlobalAlpha(100);
g.setColor(0xff9600);
g.fillRect(0,y,getWidth(),getHeight());
//invalidate();
}
}
这是在Listfield
中突出显示行的简单方法。
我希望它会对你有所帮助。