Странная высота

В моем приложении у меня есть 2 типа полей редактирования. Один из них ведет себя как однострочное поле редактирования, другой - как многострочное поле редактирования (editarea). На этом экране у меня есть один заголовок, одно поле редактирования и одна область редактирования. Когда я ввожу какой-то текст editfield, он обрезает текст и курсор. Но когда я ввожу какой-то текст editarea который включает в себя хвостатый символ (у, г, д, р) editareaвысота меняется и editfieldведи себя нормально. Если я не введу хвостатые символы, то состав не изменится.

Вот мой класс editarea:

public class EditAreaField extends HorizontalFieldManager{
    private net.rim.device.api.ui.component.EditField editArea;
    public EditAreaField (){
         // some code;
         editArea.setPadding(25, 10, 0, 10);    
    }
    public int getPreferredHeight() {
        int height = Math.max(editArea.getHeight(), textFont.getHeight());
        return height  + editArea.getPaddingTop();
    }
}

label1 -> editfield

label2 -> editarea

2 ответа

Насчет рисования курсора - вы сделали переопределение drawFocus и / или onFocus и / или onUnfocus и не перекрашивать должным образом когда-нибудь.

Это потому, что вы делаете размер, чтобы изменить с помощью

    int height = Math.max(editArea.getHeight(), textFont.getHeight());

вместо этого попробуйте указать фиксированную высоту. например

    height= Graphics.getScreenHeight()/5;

или вы также можете использовать setExtent внутри метода sublayout менеджера

     protected void sublayout(int maxWidth, int maxHeight)
            {
                layoutChild(_editField, _editField.getPreferredWidth(), _editField.getPreferredHeight());
                setPositionChild(_editField, xpos,ypos);
                setExtent(preferredHeight,preferredWidth);
            }

Я думаю, что это будет работать. пожалуйста, дайте мне знать

Другие вопросы по тегам