BlackBerry - линия не отображается - PullRequest
0 голосов
/ 03 декабря 2009

У меня проблема с EditField. Я создал EditField, используя этот код в «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);

Проблема теперь в том, что на экране не отображается линия поля. Что-то вроде, в основном Поле содержит «Имя: ----------------------» такую ​​строку в других элементах управления платформы, которая здесь не отображается на экране. В чем здесь проблема? Это по умолчанию в поддержке API? Если нет, то как мне это решить?

Примечание: эта строка создается только тогда, когда я что-то пишу на поле.

Спасибо.

1 Ответ

0 голосов
/ 10 декабря 2009

Если вы хотите иметь это «----», если EditField пуст, расширьте его, чтобы реализовать логику проверочных значений:

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

Пример использования:

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