解决方法FloatingActionButton在TextField或TextArea处于非活动状态时处于非活动状态
由于FloatingActionButton is inactive above a TextArea or TextField whilst editing我试图通过将TextField和FloatingActionButton放入作为TextField样式的Container来解决此问题。但是,这勾画出一个非常奇怪的方式 - 参见下面的示例中的第二文本字段:解决方法FloatingActionButton在TextField或TextArea处于非活动状态时处于非活动状态
public class FormSeveralInputFields extends Form {
public FormSeveralInputFields() {
super("FormSeveralInputFields", new BoxLayout(BoxLayout.Y_AXIS));
setScrollableX(false);
setScrollableY(true);
Container containerFields = new Container(new GridBagLayout());
Style styleContainerFields = containerFields.getAllStyles();
styleContainerFields.setPadding(1, 1, 1, 1);
styleContainerFields.setPaddingUnit(
Style.UNIT_TYPE_SCREEN_PERCENTAGE,
Style.UNIT_TYPE_SCREEN_PERCENTAGE,
Style.UNIT_TYPE_SCREEN_PERCENTAGE,
Style.UNIT_TYPE_SCREEN_PERCENTAGE);
getContentPane().add(containerFields);
int x = 0, y = 0;
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
containerFields.add(gbc, new Label("TextField1"));
}
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = ++x;
gbc.gridy = y;
TextField textField = new TextField(10);
Log.p(textField.getStyle().getBorder().getClass().getSimpleName());
FloatingActionButton.setIconDefaultSize(2.0f);
FloatingActionButton floatingActionButton = FloatingActionButton.createFAB(FontImage.MATERIAL_CLEAR);
Container container = floatingActionButton.bindFabToContainer(textField, Component.RIGHT, Component.CENTER);
floatingActionButton.addActionListener((aActionEvent) -> textField.setText(""));
containerFields.add(gbc, container);
}
x = 0;
y++;
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
containerFields.add(gbc, new Label("TextField1"));
}
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = ++x;
gbc.gridy = y;
TextField textField = new TextField(10);
FloatingActionButton.setIconDefaultSize(2.0f);
FloatingActionButton floatingActionButton = FloatingActionButton.createFAB(FontImage.MATERIAL_CLEAR);
floatingActionButton.addActionListener((aActionEvent) -> textField.setText(""));
BorderLayout borderLayout = new BorderLayout();
Container container = new Container(borderLayout);
container.setUIID(textField.getUIID());
textField.setUIID("");
container.add(BorderLayout.CENTER, textField);
container.add(BorderLayout.EAST, floatingActionButton);
containerFields.add(gbc, container);
}
}
}
我们最近增加了ClearableTextField
提供这种功能只需使用:
TextField tf = ...;
myContainer.add(ClearableTextField.wrap(tf));
好的 - 但TextArea没有解决方案,对不对? –
...它使文本字段“更胖”。我想知道如何避免这种情况。 –
我查看了ClearableTextField#wrap方法的源代码,并注意到调用了TextField#stopEditing和TextField#startEditingAsync。为什么这样做是可取的 - 它似乎没有这些工作,键盘不会反弹呢? –
这会影响模拟器和iPhone SE上的显示。顺便说一下:在编辑过程中,Emojis以不同的大小显示。 –