#blackberry #field
#ежевика #поле
Вопрос:
У меня есть VerticalFieldManager, который содержит два обычных поля, разделенных разделительным полем. Второе поле намного больше первого, поэтому VFM прокручивается вверх / вниз и вправо / влево.
Когда я не добавляю разделительное поле, прокрутка в VFM работает должным образом — я никогда не могу прокрутить (ни по вертикали, ни по горизонтали) содержимое второго поля.
Однако, когда я добавляю поле-разделитель (с конструктором по умолчанию), кажется, что оно делает разделитель бесконечно широким — я могу прокручивать бесконечно далеко вправо, далеко за пределы содержимого второго поля, и, похоже, я никогда не дохожу до конца разделителя.
Как я могу указать, что разделительное поле должно быть только такой ширины, какая необходима в соответствии с содержимым второго поля? Я пытался переопределить getPreferredWidth()
разделительное поле, но, похоже, это не дало никакого эффекта.
Ответ №1:
Я сам этого не делал, но подозреваю, что переопределение layout(int, int) должно это сделать.
что-то вроде:
public static int MAX_WIDTH=20;
protected void layout(int maxWidth, int maxHeight) {
super.layout(maxWidth, maxHeight);
this.setExtent(Math.min(this.getWidth(), MAX_WIDTH), this.getHeight());
}
Комментарии:
1. Похоже, это не имеет никакого эффекта — разделитель по-прежнему бесконечно широк.
Ответ №2:
Что ж, мое решение этой проблемы состояло в том, чтобы SeparatorField
полностью удалить поле и нарисовать линию, где оно должно проходить в paint()
методе.