Если вы можете оставить решение о размере LabelField до тех пор, пока он не будет выложен, то вы получите его точно из getHeight ().Это означает, что вы действительно можете получить правильный результат, в том числе с учетом любого поля или отступа для LabelField, который, я думаю, будет отсутствовать
int maxWidth = getManager().getPreferredWidth();
.
Изначально это кажется довольно сложным, потому что обычнополезно знать высоту, когда вы добавляете поле на экран.Но общий принцип заключается в том, что вы должны сделать это в подуровне менеджера, поэтому вы просто перемещаете код, который зависит от высоты, чуть позже в процессе.Преимуществом этого является то, что макет является динамическим, поэтому, если текст LabelField изменяется, то будет вызываться макет, и ваш код, зависящий от высоты, также будет повторно вызываться.
Также возможноиспользуйте подобную логику в sublayout ():
super.sublayout(...);
if (myField.getHeight() < 100 ) {
myField.setMargin((100 - myField.getHeight())/2, 0, (100 - myField.getHeight())/2, 0);
super.sublayout(...);
}
Этот пример не подходит для производства, жесткое кодирование высоты пикселя не рекомендуется.Это простой пример для понимания ....