Следуя предложениям дизайна материала о 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, при вызове.
То, что я пробовал:
- применение отдельных UIID и назначение их темам с помощьюограничение поля, получая остальную часть UIID из FloatingActionButton. Кажется, мой UIID полностью игнорируется, так как расположение кнопок является способом, по которому определяются мои поля.
- добавление второго FAB к другой позициимногослойная панель и работать с полем только на этом FAB (верхнее поле, основанное на правильном расположении центра, где оно должно быть, чтобы разместить его чуть вышепервый FAB)
fab2.bindFabToContainer (getContentPane (), Component.RIGHT, Component.CENTER);
Однако это не помещает в центр только второй FAB,но перемещает оба FAB в это место.Итак, я вернулся к исходной проблеме неправильного применения полей.
Возможно ли индивидуально правильно расположить несколько FAB в одной форме, или CN1 применяет строгую политику "только для одного FAB",следующие рекомендации по дизайну материала?
Спасибо.
РЕДАКТИРОВАТЬ с решением:
добавить первый FAB в форму с помощью обычного вызова "bindFabToContainer".
для второго 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);