7

在我的应用程序中,我有 2 种类型的编辑字段。其中一个表现得像单行编辑域,另一个表现得像多行编辑域(editarea)。在这个屏幕中,我有一个标题、一个编辑字段和一个编辑区域。当我输入一些文本时editfield,它会剪切文本和光标。但是,当我输入一些editarea包含尾部字符(y,g,q,p)editarea的文本时,高度正在变化并且editfield表现正常。如果我不输入尾字符状态不会改变。

这是我的编辑区课程:

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 -> 编辑字段

label2 -> 编辑区

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

1

这是因为您正在通过使用来更改大小

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

而不是这个尝试给出一些固定的高度。例如

    height= Graphics.getScreenHeight()/5;

或者您也可以在管理器的子布局方法中使用 setExtent

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

我认为它会起作用。请告诉我

于 2011-12-20T05:48:42.847 回答
1

关于光标绘制 - 您确实覆盖了drawFocus或/和onFocus或/和onUnfocus并且有时没有正确重新绘制。

于 2011-12-30T07:10:04.037 回答