Я пытался изменить поле расширенного текста, чтобы оно правильно отображалось в его половине горизонтального поля.
Цель состоит в следующем:
---------------------------
| address is | ***********|
| very long | ** IMAGE **|
| state, zip | ***********|
---------------------------
Где адрес - это отдельная строка, отдельная от города и почтового индекса.
Я изменяю поле адреса следующим образом:
RichTextField addrField = new RichTextField(address) {
public int getPreferredWidth() {
return 200;
}
protected void layout(int maxWidth,int maxHeight) {
super.layout(getPreferredWidth(),maxHeight);
setExtent(getPreferredWidth(), getHeight());
}
};
Результаты выглядят так:
-----------------------------
| address is ve| ***********|
| state, zip | ** IMAGE **|
| | ***********|
-----------------------------
, где явно адрес просто идет под изображением. Оба горизонтальных поля имеют ширину 200 пикселей. Это не значит, что система не будет знать, где заключить адрес.
Однако я слышал, что это сделать нелегко, и это не делается автоматически.
Мне не удалось найти прямой ответ в Интернете. Я нашел людей, которые говорили, что вам нужно сделать это в собственном менеджере компоновки, некоторые ссылаются на RichTextField API, который бесполезен. Но на самом деле никто не упоминает, как это сделать.
Я понимаю, что мне может понадобиться читать символ за символом и указывать, где должен произойти разрыв строки. Чего я не знаю, так это как именно это сделать. Вы не можете просто считать символы и предполагать, что каждый стоит 5 пикселей, и вам не нужно это делать.
Конечно, должен быть какой-то способ достичь этого таким образом, который имеет смысл.
Есть предложения?