在我的应用程序中,我有2种类型的编辑字段。其中一个的行为类似于单行编辑字段,另一个的行为类似于多行编辑字段(editarea)。在此屏幕中,我有一个标题,一个编辑字段和一个编辑区域。当我在editfield中输入一些文本时,它将剪切文本和光标。但是,当我在editarea中输入一些文本,其中包括带尾字符(y,g,q,p)时,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

最佳答案

这是因为您正在通过更改尺寸来更改

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

而不是尝试提供一些固定的高度。例如
    height= Graphics.getScreenHeight()/5;

或者您也可以在管理器的sublayout方法内使用setExtent
     protected void sublayout(int maxWidth, int maxHeight)
            {
                layoutChild(_editField, _editField.getPreferredWidth(), _editField.getPreferredHeight());
                setPositionChild(_editField, xpos,ypos);
                setExtent(preferredHeight,preferredWidth);
            }

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

08-06 10:05