проблема с отображением BitmapFields в HorizontalFieldManager подряд в Blackberry Storm
-
20-09-2019 - |
Вопрос
Я создал 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 для всех остальных выпусков из соображений совместимости.