Blackberry - одна строка BasicEditField с большим текстом - PullRequest
1 голос
/ 21 июля 2009

Я создал настроенное BasicEditField с Border с использованием Bitmap. Теперь при наборе текста он пересекает границу BasicEditField.

Это мой код

class customEditField1 extends EditField
{
     Bitmap mBorder = null;
     customEditField1(Bitmap borderBitmap) 
     {
        mBorder = borderBitmap;
     }
     protected void paint(Graphics graphics) 
     {
         graphics.drawBitmap(0, 0, mBorder.getWidth(),mBorder.getHeight(), mBorder, 0, 0);
         super.paint(graphics);
     }
}

Я хочу создать BasicEditField, который должен скрывать ранее введенный текст и отображать вновь введенный текст, а набранный текст должен быть с рамкой. Это не должно зависеть от ограничения числа символов. И я хочу применить заполнение между текстом и границей.

1 Ответ

1 голос
/ 22 июля 2009

Вы можете поместить BasicEditField в HorizontalFieldManager.
Не забудьте переместить растровое рисование границ из BasicEditField в HorizontalFieldManager.

class ScrollEdit extends HorizontalFieldManager {
    Bitmap mBorder = null;
    public BasicEditField mEdit = null;

    public ScrollEdit(Bitmap border) {
        super(HORIZONTAL_SCROLL | NO_HORIZONTAL_SCROLLBAR);
        mBorder = border;
        mEdit = new EditField(BasicEditField.NO_NEWLINE);
        add(mEdit);
    }

    protected void paint(Graphics graphics) {
        graphics.drawBitmap(0, 0, mBorder.getWidth(), mBorder.getHeight(),
                mBorder, 0, 0);
        super.paint(graphics);
    }

}

Но вам придется поэкспериментировать с макетом и установить Extent для менеджера размеров и редактировать правильно. Мой совет - сначала попробуйте без растрового изображения границы.

См. Прокрутка BasicEditField вместо переноса

Говоря о переносе, установите padding в BasicEditField в менеджере или добавьте пробел в растровое изображение границы ...

...