Blackberry Listfield突出显示颜色

时间:2012-03-05 15:45:30

标签: blackberry listfield

更改黑莓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);

2 个答案:

答案 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)

为此屏幕创建一个booleanboolean _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中突出显示行的简单方法。 我希望它会对你有所帮助。