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, устанавливая изображение в центре и текст на юге?

Другие вопросы по тегам