проблема с отображением BitmapFields в HorizontalFieldManager подряд в Blackberry Storm - PullRequest
0 голосов
/ 28 августа 2009

Я создал HorizontalFieldManager и добавил в него BitmapFields.

В Blackberry Storm для Display.getWidth () задано значение 480. Я хочу использовать первые 450, чтобы добавить несколько битовых полей на LHS экрана, которые я создаю во время выполнения, и добавить 2 битовых поля при запуске на правой стороне экрана.

2 BimapFields, которые я хочу показать при запуске, добавлены в Конструкторе и других растровых полях, которые я создаю во время выполнения, r добавили такие слова, как ..

class MyCanvas extends MainScreen
{

  MyCanvas()
  {

       hfm_BitmapField = new HorizontalFieldManager(){
             protected void sublayout(int maxWidth, int maxHeight) {
             super.sublayout(maxWidth, maxHeight);
             setExtent(Display.getWidth()-30, 60);
             }
         };


         startBitmap = Bitmap.getBitmapResource("start.png");
         startBitmapField = new BitmapField(startBitmap, BitmapField.ACTION_INVOKE |            BitmapField.FIELD_HCENTER | BitmapField.FIELD_RIGHT);
         hfm_BitmapField.add(startBitmapField);

         endBitmap = Bitmap.getBitmapResource("end.png");
         endBitmapField = new BitmapField(endBitmap, BitmapField.ACTION_INVOKE |            BitmapField.FIELD_HCENTER | BitmapField.FIELD_RIGHT);
         hfm_BitmapField.add(endBitmapField);

         drawBitmap();
 }


 public void drawBitmap()
 {
      bitmap[i] = new Bitmap(50, 50);
      Graphics g = new Graphics(bitmap[i]);
      g.drawLine(5,5,25,25);
      bitmapField[i] = new BitmapField(bitmap[i]);

      synchronized(UiApplication.getEventLock()) { hfm.add(bitmapField[i]); }
 }  

Мне нужны startBitmapField & endBitmapField в RHS и bitmapField [i], которые я создаю во время выполнения в LHS HorizontalFieldManagers.

Я думаю добавить 2 HorizontalFieldManager. 1 для bitmapField [i] и 1 для startBitmapField & endBitmapField. Но как добавить 2 HorizontalFieldManager или любых других FieldManager подряд?

Есть решение? Как это сделать?

Ответы [ 3 ]

5 голосов
/ 28 августа 2009

Вы можете разместить 2 горизонтальных диспетчера полей внутри другого HorizontalFieldManager.

2 голосов
/ 28 августа 2009

Вместо использования флагов выравнивания попробуйте добавить в свой метод подслоя.

Для каждого дочернего элемента вашего менеджера (hfm) вам необходимо вызвать setPositionChild. Поэтому, если вы хотите, чтобы он был выровнен и выровнен по вертикали, вы бы сделали что-то вроде:

setPositionChild (deleteButton, hfm.getPreferredWidth () - deleteButton.getPreferredWidth (), (hfm.getPreferredHeight () / 2) - (deleteButton.getPreferredHeight () / 2))

Это позволит установить верхний левый угол кнопки удаления в правильном положении, чтобы он был выровнен по правому краю и центрирован по вертикали в пределах hfm.

0 голосов
/ 30 марта 2011

Будет проблема, если вы увидите приложение на связи. У вас должно быть каждое настраиваемое поле в отдельном менеджере полей, чтобы избежать использования сенсорного события. Если вы используете layoutChild вместо super.sublayout (ширина, высота), это отключит навигацию по экрану, поэтому избегайте ее использования. Используйте navigationMovement для настройки навигации по вашим полям. Дополнительно: если вы не используете функцию super.sublayout, она может не макетировать некоторые из ваших полей, поэтому рекомендуется использовать ее.

Дополнительно: используйте эмулятор Storm для всех ваших сенсорных приложений и JDE 4.5 эмулятора Pearl для всех остальных выпусков для устранения проблем совместимости.

...