我實現我自己的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