Проблема с отображением BitmapFields в HorizontalFieldManager подряд в Blackberry Storm

Я создал 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 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам