Попробуйте использовать setMargin(5,5,5,5)
вместо setPadding(5,5,5,5)
.
Поле # setMargin ()
Поле - это область вне поля после границы.Менеджер должен правильно распределить поля, поскольку они перекрываются.
Поле # setPadding ()
Заполнение - это область в поле между содержимым и границей.
Поле # 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);
}