2011-12-19 9 views
7

En mi aplicación tengo 2 tipos de campos de edición. Uno de ellos se comporta como campo de edición de una sola línea, el otro se comporta como campo de edición multilínea (editarea). En esta pantalla, tengo un encabezado, un campo de edición y un editor. Cuando ingreso texto a editfield, recorta el texto y el cursor. Pero, cuando ingreso algún texto al editarea que incluye un carácter de cola (y, g, q, p) editarea s la altura está cambiando y editfield actúa de manera normal. Si no ingreso los caracteres de cola, la situación no cambiará.editfield weird height

Aquí es mi clase 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

¿me puede explicar brevemente? –

+0

Bueno, sí expliqué en la pregunta en realidad. En la imagen de la izquierda puede ver, hay un problema de recorte, la mitad del cursor está sobre el primer carácter, la mitad está en el último carácter. Si escribe algún carácter con cola, el error de recorte ya no existe. –

+0

puede venir aquí vamos a discutir más sobre este http://chat.stackoverflow.com/rooms/4014/knowledge-sharing-center-for-blackberry-and-java –

Respuesta

1

esto se debe a que usted está haciendo el tamaño de cambiar usando

int height = Math.max(editArea.getHeight(), textFont.getHeight()); 

En lugar de esto intenta dar una altura fija. por ejemplo

height= Graphics.getScreenHeight()/5; 

o también puede utilizar SetExtent dentro del método sublayout del gestor de

 protected void sublayout(int maxWidth, int maxHeight) 
      { 
       layoutChild(_editField, _editField.getPreferredWidth(), _editField.getPreferredHeight()); 
       setPositionChild(_editField, xpos,ypos); 
       setExtent(preferredHeight,preferredWidth); 
      } 

Creo que va a trabajar. por favor hágamelo saber

+0

campo de edición es de tamaño fijo pero editarea no debería ser reparado porque no sabemos cuántos caracteres ingresará el usuario. Además, establezco la extensión dentro del método de sublayout anulándolo como dijiste. es raro La altura de editarea es de 38 cuando se inicializa, cuando el usuario pone caracteres de cola cambia a 39. Creo que hay un problema. –

1

Sobre la pintura del cursor - que hizo anular drawFocus y/o onFocus y/o onUnfocus y no volver a pintar adecuadamente en algún momento.

+0

anulo onFocus y onUnfocus. el componente personalizado que agregué la misma pantalla en las imágenes se comporta de manera diferente. Si hay un problema en la imagen de la izquierda, el problema debe permanecer en la imagen correcta. la fuente del problema es el componente editarea, creo, pero no puedo resolverlo. –