Вопрос

Я пытаюсь просто изменить высоту редактирования. Это звучит довольно легко, но я столкнулся с проблемой, которая сводит меня с ума. Вот мой код:

public class CMainManager extends HorizontalFieldManager
{
    EditField mtxt=new EditField(EditField.FOCUSABLE | EditField.FILTER_DEFAULT);

    /* Constructeur */
    public CMainManager()
    {
        add(mtxt);
    }

     public int getPreferredHeight()
     {
          return Display.getHeight();
    }

    public int getPreferredWidth()
    {
          return Display.getWidth();
    }

    protected void sublayout(int width, int height)
    {
        layoutChild(mtxt, 50, 500);
        setPositionChild(mtxt, 0, 10);
        mtxt.setBackground(
                BackgroundFactory.createSolidBackground(0x000000FF));

        setExtent(width, height);
    }
}

Line Layoutchild (Mtxt, 50, 500); должен установить ширину и высоту моего редактирования. Это так, но только с шириной. Высота постоянна. Если я установите его на 500, я получу тот же результат, как если бы я установил его на 10.

Есть идеи о том, что мне не хватает? Потому что я уверен, что это глупая ошибка, которую я делаю ...

Спасибо

== РЕДАКТИРОВАТЬ

После помощи Jproffit я понял, что сделал неправильно. Однако теперь, когда это работает (я могу установить высоту), у меня есть другая проблема. Вот я код:

private EditField m_Txt=new EditField(EditField.FOCUSABLE |
                                        EditField.FILTER_DEFAULT) {
    protected void layout(int width, int height)
    {
        setExtent(Display.getWidth(), m_TxtHeight);
    }
    public boolean isFocusable()
    {
        return true;
    }

    protected void onFocus(int direction)
    {
        super.onFocus(direction);
        invalidate();
    }

    protected void onUnfocus() {
        super.onUnfocus();
        invalidate();
    }
};

С помощью этого кода я не могу правильно управлять фокусом. Что я забыл? Я не вижу курсора в своей области.

Есть идеи ?

Спасибо

Это было полезно?

Решение

Вы не говорите об этом, которые нужно принимать, вы указываете максимальное количество места, которое он может занять. Поэтому, когда вы скажете ему 10, 50 или 500, если он хочет использовать высоту 8, это все, что будет. Вам придется отменять layout() На редакции, если вы хотите контролировать его размеры.

Другие советы

Попробуйте сделать так .. Создайте пользовательский Editfield и внутри метода макета

_editField = new EditField("", initialValueOfTextField) 
    {
        protected void layout(int maxWidth, int maxHeight) 
        {
          int myWidth = getMaxSize() * getFont().getAdvance("W");// define your req width
          int myHeight= 50 // your required height
          super.layout(myWidth, myHeight);
       }
   };
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top