LWUIT: многострочная TextArea в списке. Не решается с помощью ContainerList
У меня есть приложение j2me LWUIT, которое использует список. Каждая ячейка в списке содержит изображение и текстовую область. TextArea не будет расти. Я прочитал, что в списке все ячейки должны быть одинакового размера, поэтому я должен использовать ContainerList.
С ContainerList у меня такая же проблема! Мои TextAreas не будут расти. Вот где я создаю TextArea:
TextArea caption = new TextArea();
caption.getStyle().setBgTransparency(255);
caption.getStyle().setBgColor(0x060507);
caption.getStyle().setBorder(null);
caption.getStyle().setFgColor(0xf0f0f0);
caption.getStyle().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
caption.getStyle().setMargin(0,10,10,10);
caption.setText(m.caption_text);
caption.setGrowByContent(true);
caption.setSingleLineTextArea(false);
cellCon.addComponent(caption);
cellCon - это вертикальная BoxLayout. Даже если я удалю изображение, они все равно не будут расширяться. Если я изменю cellCon, чтобы использовать BorderLayout и поместил изображение в NORTH и TextArea SOUTH, TextArea действительно расширяется, но накладывается на изображение (как будто оно все еще пытается поддерживать одинаковую высоту).
Я создаю ContainerList следующим образом:
list = new ContainerList(new BoxLayout(BoxLayout.Y_AXIS),new DefaultListModel(data));
Как мне сделать эту работу?
2 ответа
Видимо, growByContent не работает в ContainerList. В конечном итоге мне пришлось отказаться от ContainerList, а не использовать контейнер компонентов. В этом контексте growByContent работает нормально.
Вы можете попробовать это двумя способами, отдельно или в комбинации.
Попробуйте установить текст для TextArea
в конструкторе компонента. Я имею в виду
TextArea caption = new TextArea(m.caption_text);
Обычно он работает нормально, когда вы устанавливаете текст в конструкторе. Размер TextArea
изменить размер, как следует. Если вы не хотите использовать это. Вы можете создать TextArea
и установить после, строки и столбцы с setRows()
, а также setColumns()
, Я не знаю почему, но TextArea
изменение размера не очень хорошо работает.
Другая рекомендация: можете ли вы попытаться установить макет на BorderLayout
, устанавливая изображение в центре и текст на юге?