Внутри моего ListField я хочу иметь возможность взять любую заданную длинную строку и просто обернуть первую строку на ширину экрана, взять только оставшуюся строку и отобразить ее ниже, а затем сделать многоточие остальных.Прямо сейчас, это то, что я использую для определения переноса в моем вызове рисования:
int totalWidth = 0;
int charWidth = 0;
int lastIndex = 0;
int spaceIndex = 0;
int lineIndex = 0;
String firstLine = "";
String secondLine = "";
boolean isSecondLine = false;
for (int i = 0; i < longString.length(); i++){
charWidth = Font.getDefault().getAdvance(String.valueOf(longString.charAt(i)));
//System.out.println("char width: " + charWidth);
if(longString.charAt(i) == ' ')
spaceIndex = i;
if((charWidth + totalWidth) > (this.getWidth()-32)){
//g.drawText(longString.substring(lastIndex, spaceIndex), xpos, y +_padding, DrawStyle.LEFT, w - xpos);
lineIndex++;
System.out.println("current lines to draw: " + lineIndex);
/*if (lineIndex = 2){
int idx = i;
System.out.println("first line " + longString.substring(lastIndex, spaceIndex));
System.out.println("second line " + longString.substring(spaceIndex+1, longString.length()));
}*/
//firstLine = longString.substring(lastIndex, spaceIndex);
firstLine = longString.substring(0, spaceIndex);
//System.out.println("first new line: " +firstLine);
//isSecondLine=true;
//xpos = 0;
//y += Font.getDefault().getHeight();
i = spaceIndex + 1;
lastIndex = i;
System.out.println("Rest of string: " + longString.substring(lastIndex, longString.length()));
charWidth = 0;
totalWidth = 0;
}
totalWidth += charWidth;
System.out.println("total width: " + totalWidth);
//g.drawText(longString.substring(lastIndex, i+1), xpos, y + (_padding*3)+4, DrawStyle.ELLIPSIS, w - xpos);
//secondLine = longString.substring(lastIndex, i+1);
secondLine = longString.substring(lastIndex, longString.length());
//isSecondLine = true;
}
Теперь это делает большую работу по фактическому переносу любой заданной строки (при условии, что значения y были правильно смещены, и эторисовал текст только после того, как ширина строки превысила ширину экрана, а также оставшуюся строку после нее), однако каждый раз, когда я пытаюсь получить первые две строки, он всегда заканчивается возвращением последних двух строк строки, если она идетза две линии.Есть ли лучший способ сделать что-то подобное, так как я только что из идей?