Codename One - несколько FAB и их расположение - PullRequest
0 голосов
/ 31 декабря 2018

Следуя предложениям дизайна материала о FAB, у меня есть случай, когда мне нужно 2 FAB в одной форме.(Хорошая статья и хороший сайт в целом, если вы новичок в этом: https://material.io/design/components/buttons-floating-action-button.html)

При добавлении FAB на панель контента он будет помещен на многоуровневую панель, в горизонтальном и вертикальном выравнивании, как указаново время вызова связывания:

fab1.bindFabToContainer(getContentPane(), Component.RIGHT, Component.BOTTOM);

Теперь, когда я добавлю второй FAB в тот же нижний правый угол, они будут отображаться слева направо, рядом друг с другом. Я хотел бы иметь возможностьдержите их поверх друг друга, как на картах Google или в виде SUB Fab Items, при вызове.

То, что я пробовал:

  1. применение отдельных UIID и назначение их темам с помощьюограничение поля, получая остальную часть UIID из FloatingActionButton. Кажется, мой UIID полностью игнорируется, так как расположение кнопок является способом, по которому определяются мои поля.
  2. добавление второго FAB к другой позициимногослойная панель и работать с полем только на этом FAB (верхнее поле, основанное на правильном расположении центра, где оно должно быть, чтобы разместить его чуть вышепервый FAB)

fab2.bindFabToContainer (getContentPane (), Component.RIGHT, Component.CENTER);

Однако это не помещает в центр только второй FAB,но перемещает оба FAB в это место.Итак, я вернулся к исходной проблеме неправильного применения полей.

Возможно ли индивидуально правильно расположить несколько FAB в одной форме, или CN1 применяет строгую политику "только для одного FAB",следующие рекомендации по дизайну материала?

Спасибо.

РЕДАКТИРОВАТЬ с решением:

  1. добавить первый FAB в форму с помощью обычного вызова "bindFabToContainer".

  2. для второго FAB, используйте многоуровневую панель и вручную добавьте и разместите FAB в этой многоуровневой панели.Следующий код добавляет 2-й FAB чуть выше первого, подобно тому, как появится суб-FAB

Решение:

fab2 = FloatingActionButton.createFAB(FontImage.MATERIAL_ATTACH_MONEY);
Container layer = getLayeredPane(getClass(), true);
FlowLayout flow = new FlowLayout(RIGHT);
flow.setValign(BOTTOM);
layer.setLayout(flow);
layer.add(fab2 );
fab2.getAllStyles().setMarginUnit(Style.UNIT_TYPE_DIPS);
fab2.getAllStyles().setMarginBottom(15);

1 Ответ

0 голосов
/ 01 января 2019

Руководство по проектированию материалов включает в себя вспомогательные фабрики, а не множественные фабрики, которые сильно разочарованы.Возможно, вы думаете о быстром наборе.Что вы можете сделать через:

fab.createSubFab(otherFab1);
fab.createSubFab(otherFab2);
fab.createSubFab(otherFab3);

Если вы все еще хотите добавить еще один FAB, вы можете сделать это, добавив его вручную на другой слой:

Container layer = parentForm.getLayeredPane(getClass(), true);
FlowLayout flow = new FlowLayout(LEFT);
flow.setValign(BOTTOM);
layer.setLayout(flow);
layer.add(fab2);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...