Blackberry - установить положение поля на экране?

Я хочу разместить свое поле на указанных позициях.


person Bohemian    schedule 19.11.2009    source источник


Ответы (1)


в основном, чтобы установить любую позицию в поле менеджера, вы должны:

  1. override sublayout
    • set layoutChild for each field in manager
    • установите setPositionChild для каждого поля в диспетчере
    • используйте setExtend для правильного управления размером

удалена неработающая ссылка на ImageShack

Код расширенного менеджера:

class CustomVerticalManager extends VerticalFieldManager {
 LabelField mText1 = new LabelField("top");
 LabelField mText2 = new LabelField("bottom");

 public CustomVerticalManager() {
  add(mText1);
  add(mText2);
 }

 public int getPreferredHeight() {
  return Display.getHeight();
 }

 public int getPreferredWidth() {
  return Display.getWidth();
 }

 protected void sublayout(int width, int height) {
  width = getPreferredWidth();
  height = getPreferredHeight();

  int fieldWidth = mText1.getPreferredWidth();
  int fieldHeight = mText1.getPreferredHeight();
  layoutChild(mText1, fieldWidth, fieldHeight);
  int xPos = (width - fieldWidth) >> 1;
  int yPos = 0;
  setPositionChild(mText1, xPos, yPos);

  fieldWidth = mText2.getPreferredWidth();
  fieldHeight = mText2.getPreferredHeight();
  layoutChild(mText2, fieldWidth, fieldHeight);
  xPos = (width - fieldWidth) >> 1;
  yPos = height - fieldHeight;
  setPositionChild(mText2, xPos, yPos);
  setExtent(width, height);
 }
}

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

class Scr extends MainScreen {
 CustomVerticalManager mManager = new CustomVerticalManager();

 public Scr() {
  add(mManager);
 }
}

См. Также
Беспроводная связь - Как: создать собственный диспетчер макета для экрана
Blackberry - анимация макета полей

person Maksym Gontar    schedule 19.11.2009
comment
Хороший ответ. У RIM действительно был новый класс в API 5.0 под названием AbsoluteFieldManager, но по какой-то причине он был удален из последней бета-версии. - person Marc Novakowski; 20.11.2009