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

StackOverflow https://stackoverflow.com/questions/1346184

Вопрос

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

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

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

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 HorizontalFieldManagers.1 для bitmapField[i] и 1 для startBitmapField и endBitmapField.Но как добавить 2 HorizontalFieldManager или любые другие FieldManager подряд?

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top