Я создаю ListField с флажками из Как - создать ListField с флажками
Но я не понимаю, как обернуть текст в строку в этом ListField.
Я сослался на тему
Перенос текста для элементов в полях списка
Здесь написано
Если все, что вы отображаете, это текст, то я бы использовал подход, предложенный рабом.
Я отображаю текст только в ListField, который я хочу обернуть, если он не помещается на экране устройства.
Но я не получаю "подход, предложенный раб", в котором Как рассчитать?
String [] linesToDraw = рассчитать количество строк в зависимости от ширины строки
Я застрял в этом, поэтому какие-либо подробности по этому вопросу?
С твоей логикой я получил
* split text on words
* create string array and while words array not empty do
o create string lineStr
o while getFont().getAdvance(lineStr+" "+words[i]) < row width move words[i] to lineStr
Я делаю это как
if(getFont().getAdvance(lineStr+" "+words[i]) < Display.getWidth())
{
lineStr += words[i];
}
И я храню lineStr в Vector linesToDraw, как и тот же lineStr, который я использую для хранения текста следующей строки.
и в конце для рисования я делаю
for (int i = 0; i < linesToDraw.size(); i++)
{
String textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, 0, y, 0, w);
y += fontHeight;
}
но как рассчитать нет. строк строки и высота строки?
так, чтобы с этой высотой строки я мог написать setRowHeight (rowHeight), поскольку высота строки различна для разных строк.
Я получил нет. строк в соответствии с шириной строки и сохранил их в векторе и я делаю
int fontHeight = this.getFont().getHeight();
for (int i = 0; i < linesToDraw .size(); i++)
{
textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, xpos, ypos, 0 , width);
ypos += fontHeight;
}
теперь он рисует линии, но поверх предыдущей, как по умолчанию listField.setRowHeight (), занимает только одну строку. Если есть 2 строки, то я пишу setRowHeight (getFont (). GetHeight () * 2) в drawListRow (), но затем он зацикливается
Если я напишу setRowHeight () при создании ListField, тогда все будет правильно, но для всех строк будет установлена одинаковая высота строки.
Я получаю строку для рисования во время выполнения, и высота строки должна быть переменной для разных строк, тогда как я могу установитьRowHeight () с каким параметром и в каком методе?