我实现我自己的EditField中当打这个确切的情况。发生什么事情是因为你允许水平滚动,并且EditField本质上想要使用尽可能多的宽度,你最终得到一个非常宽的EditField。我从我的代码复制这个,所以希望它能为你工作,但如果它不添加评论,我会尝试看看我能否帮助它工作。
EditField edit = new EditField(EditField.NO_NEWLINE | style) {
protected void fieldChangeNotify(int context) {
try{
super.fieldChangeNotify(context);
setExtent(this.getFont().getAdvance(this.getText()) + 10, this.getHeight());
}
catch(Exception e){
//don't recall why I needed this, but it works so I'm hesitant to remove it
}
}
protected void layout(int width, int height) {
super.layout(width, height);
setExtent(this.getFont().getAdvance(this.getText()) + 10, this.getHeight());
}
};
这将做的是逐步使EditField随着文本的增长而变得更宽。我有一个与它一起成长的HFM,但你可能不需要这个。我这样做是因为如果字段变得比屏幕宽度更宽,而不是滚动整个屏幕,则可以让这个字段水平滚动。另外,+ 10在那里,因为它没有它剪裁光标。如果你想这样做,我可以编辑这个帖子来包含它。
谢谢。自发布此问题以来,我的方向稍有不同。我现在连接到HFM的scrollChanged事件中,测量编辑框中文本的宽度,并使用'setHorizontalScroll'将滚动限制到恰好显示光标的位置。当用户将光标移动到左侧时,我仍然需要继续,因为它现在正在消失。 – MusiGenesis 2011-04-14 16:50:17
顺便说一句,这代码似乎完全容纳光标,它通常是一个空间的宽度:'this.getFont()getAdvance(this.getText()+““)'。 – MusiGenesis 2011-04-14 16:51:40