Странная высота
В моем приложении у меня есть 2 типа полей редактирования. Один из них ведет себя как однострочное поле редактирования, другой - как многострочное поле редактирования (editarea). На этом экране у меня есть один заголовок, одно поле редактирования и одна область редактирования. Когда я ввожу какой-то текст editfield
, он обрезает текст и курсор. Но когда я ввожу какой-то текст editarea
который включает в себя хвостатый символ (у, г, д, р) 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
2 ответа
Насчет рисования курсора - вы сделали переопределение drawFocus
и / или onFocus
и / или onUnfocus
и не перекрашивать должным образом когда-нибудь.
Это потому, что вы делаете размер, чтобы изменить с помощью
int height = Math.max(editArea.getHeight(), textFont.getHeight());
вместо этого попробуйте указать фиксированную высоту. например
height= Graphics.getScreenHeight()/5;
или вы также можете использовать setExtent внутри метода sublayout менеджера
protected void sublayout(int maxWidth, int maxHeight)
{
layoutChild(_editField, _editField.getPreferredWidth(), _editField.getPreferredHeight());
setPositionChild(_editField, xpos,ypos);
setExtent(preferredHeight,preferredWidth);
}
Я думаю, что это будет работать. пожалуйста, дайте мне знать