我正在尝试使用以下代码段填充电子邮件字段:
emailField = new BasicEditField(BasicEditField.FILTER_EMAIL|Field.FIELD_HCENTER|TextField.NO_NEWLINE|Field.HIGHLIGHT_FOCUS|Field.FOCUSABLE);
emailField.setLabel("Email: ");
emailField.setPadding(5, 5, 5, 5);
emailField.setBorder(BorderFactory.createRoundedBorder(new XYEdges(10, 10, 10, 10), 0x0083B0D7, Border.STYLE_SOLID));
是否有正确的方法来填充边框和场背景之间没有边距?
答案 0 :(得分:4)
尝试使用setMargin(5,5,5,5)
代替setPadding(5,5,5,5)
。
Field#setMargin()
保证金是边界之后的场外区域。由于这些重叠,由经理自行分配保证金。Field#setPadding()
填充是内容和边界之间的字段内的区域。Field#SetBorder()
边界是填充之外和边缘之前的字段内的区域。
<强>更新强>:
你是对的,只用setPadding()
代替setMargin()
,没有产生预期的结果。原因是您正在使用的Border
,更准确地说是它的厚度( 10 )和样式( STYLE_SOLID )。将边框粗细减小为 3 ,并将其样式更改为 STYLE_FILLED 。
经过上述变更
现在是代码片段:
public class PlayingWithBorders extends MainScreen {
public PlayingWithBorders() {
super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT | USE_ALL_WIDTH);
VerticalFieldManager vfm = new VerticalFieldManager(USE_ALL_HEIGHT | USE_ALL_WIDTH);
vfm.setBackground(BackgroundFactory.createSolidBackground(Color.CYAN));
BasicEditField emailField = new BasicEditField();
emailField.setLabel("Email: ");
emailField.setPadding(5, 5, 5, 5);
emailField.setMargin(5, 5, 5, 5);
emailField.setBorder(BorderFactory.createRoundedBorder(new XYEdges(3, 3, 3, 3), 0x0083B0D7, Border.STYLE_FILLED));
emailField.setBackground(BackgroundFactory.createSolidBackground(Color.WHITE));
BasicEditField passwordField = new BasicEditField();
passwordField.setLabel("Password: ");
passwordField.setPadding(5, 5, 5, 5);
passwordField.setMargin(5, 5, 5, 5);
passwordField.setBorder(BorderFactory.createRoundedBorder(new XYEdges(3, 3, 3, 3), 0x0083B0D7, Border.STYLE_FILLED));
passwordField.setBackground(BackgroundFactory.createSolidBackground(Color.WHITE));
vfm.add(emailField);
vfm.add(passwordField);
add(vfm);
}