2011-12-19 5 views
7

В моем приложении у меня есть 2 типа полей редактирования. Один из них ведет себя как однострочное поле редактирования, другое ведет себя как многострочное поле редактирования (editarea). На этом экране у меня есть один заголовок, одно поле редактирования и одна область редактирования. Когда я ввожу некоторый текст в editfield, он зажимает текст и курсор. Но при вводе некоторого текста в editarea, который включает хвостовой знак (y, g, q, p) editarea s высота меняется и editfield действует нормально. Если я не буду вводить символы хвоста, то это не изменится.editfield weird height

Вот мой 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

enter image description here enter image description here

+0

не могли бы вы кратко объяснить? –

+0

хорошо я действительно объяснение в вопросе фактически. На левом изображении вы видите, что проблема отсечения составляет половину курсора над первым символом, а половина - у последнего символа. Если вы наберете некоторый символ, то обрезание будет больше. –

+0

Можете ли вы прийти сюда, мы обсудим подробнее об этом http://chat.stackoverflow.com/rooms/4014/knowledge-sharing-center-for-blackberry-and-java –

ответ

1

это потому, что вы делаете размер, чтобы изменить используя

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); 
      } 

Я думаю, что он будет работать. Пожалуйста, дайте мне знать

+0

editfield - фиксированный размер, но editarea не следует исправлять потому что мы не знаем, сколько символов вводит пользователь. Кроме того, я устанавливал степень внутри метода подъязыков, переопределяя его, как вы сказали. это странная высота editarea составляет 38 при инициализации, когда пользователь вводит символы хвоста, он меняется на 39. Есть проблема, о которой я думаю. –

1

О курсора живописи - вы сделали переопределить drawFocus или/и onFocus или/и onUnfocus и не перекрашивать должным образом когда-то.

+0

i overrode onFocus и onUnfocus. пользовательский компонент, который я добавил на экране одного изображения, ведет себя по-другому. Если есть проблема с левым изображением, проблема должна оставаться на правильном изображении. источником проблемы является компонент editarea, который я думаю, но я не могу его решить. –

 Смежные вопросы

  • Нет связанных вопросов^_^