Blackberry Listfield выделите цветом - PullRequest
0 голосов
/ 05 марта 2012

Каков наилучший способ изменить цвет подсветки (фокуса) ежевики 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 ]

1 голос
/ 05 марта 2012

Вы можете установить цвет выделения поля списка, используя следующий код

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, чтобы мы могли помочь вам повысить производительность.

0 голосов
/ 07 марта 2012

создать один boolean для этого экрана. boolean _inFocus = false;. Затем добавьте два метода (onfocus, onunfocus) в ваш Listfield конструктор. 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. Я надеюсь, что это поможет вам.

...