Pregunta

Estoy teniendo un problema con EditField. He creado una EditField utilizando este código bajo un "HorizontalFieldManager".

EditField nameEditLabel = new EditField (EditField.FOCUSABLE 
    | EditField.NO_NEWLINE | EditField.FIELD_RIGHT);
nameEditLabel.setMaxSize(25);
nameEditLabel.setMargin(50, 0, 0, 80);
horizontalFldManager.add(nameEditLabel);

problema ahora es, En la pantalla, que no muestra la línea del campo. Algo así como, básicamente, un campo contiene "Nombre: ----------------------" tal línea en otros controles de la plataforma, que no se muestra aquí en la pantalla. ¿Cuál es el problema aquí? Es por defecto en apoyo de la API? Si no, ¿cómo puedo resolverlo?

Nota:. Esta línea se está creada sólo cuando escribo algo en el campo

Gracias.

¿Fue útil?

Solución

Si usted quiere tener este "----" en caso EditField está vacía, extenderlo a implementar la lógica de valor de comprobación:

class LabelFieldEmpty extends EditField {
 String mEmptyText = "";

 public LabelFieldEmpty(long style) {
  super(style);
 }

 public void setEmptyText(String emptyText) {
  mEmptyText = emptyText;
 }

 public String getEmptyText() {
  return mEmptyText;
 }

 protected boolean keyChar(char key, int status, int time) {
  if (null != mEmptyText)
   if (getText().equalsIgnoreCase(mEmptyText)) {
    setText(String.valueOf(key));
    return true;
   }
  return super.keyChar(key, status, time);
 }

 protected void fieldChangeNotify(int context) {
  if (null != mEmptyText)
   if (!getText().equalsIgnoreCase(mEmptyText))
    if (getText().equalsIgnoreCase("")) {
     setText(mEmptyText);
     setCursorPosition(0);
    }
  super.fieldChangeNotify(context);
 }
}

Ejemplo de uso:

class Scr extends MainScreen {

 public Scr() {
  String label = "Name:";
  String empty = "-------------------------";
  int maxChars = 25;
  long style = EditField.FOCUSABLE | EditField.NO_NEWLINE
    | EditField.FIELD_RIGHT;
  LabelFieldEmpty nameEdit = new LabelFieldEmpty(style);
  nameEdit.setLabel(label);
  nameEdit.setMaxSize(maxChars);
  nameEdit.setMargin(50, 0, 0, 80);
  nameEdit.setEmptyText(empty);
  add(nameEdit);
 }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top