【问题标题】:editfield weird height编辑字段奇怪的高度
【发布时间】:2011-12-19 13:42:56
【问题描述】:

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

这是我的编辑区类:

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 -> 编辑区

【问题讨论】:

  • 你能简单解释一下吗?
  • 好吧,我确实在问题中进行了解释。在左图中,您可以看到存在剪切问题,光标一半在第一个字符上,一半在最后一个字符上。如果您键入一些带尾的字符,则不再出现剪辑错误。
  • 你能不能来这里我们会讨论更多关于这个chat.stackoverflow.com/rooms/4014/…

标签: java blackberry blackberry-editfield


【解决方案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);
            }

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

【讨论】:

  • editfield 的大小是固定的,但editarea 不应该是固定的,因为我们不知道用户将输入多少个字符。另外,我通过覆盖它来设置子布局方法中的范围,如你所说。很奇怪,editarea的高度在初始化时是38,当用户输入尾部字符时,它会变为39。我认为有问题。
【解决方案2】:

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

【讨论】:

  • 我覆盖了 onFocus 和 onUnfocus。我在图像中添加相同屏幕的自定义组件表现不同。如果左图有问题,问题必须留在右图。问题的根源是我认为的editarea组件,但我无法解决。
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多