Verwenden Sie anstelle der LineBreakMeasurer
Methode (LBM
) nextLayout(float)
die überladene Methode LBM.nextLayout(float, int, boolean)
. Dies ermöglicht es Ihnen, den Text einzuschränken, den LBM
in der zurückgegebenen TextLayout
enthalten wird. In Ihrem Fall werden Sie es anweisen, nicht über den nächsten Zeilenumbruch hinauszugehen.
Dieses Code-Snippet sollte Ihnen die Idee geben. Verwenden Sie zuerst LBM.nextOffset
, um zu sehen, welcher Zeichenindex das Ende des nächsten Layouts wäre. Wiederholen Sie dann den String-Inhalt bis zu diesem Offset, um zu sehen, ob Sie Zeilenumbrüche finden. Wenn Sie das tun, dann verwenden Sie diese gefunden Grenze als das zweite Argument zu nextLayout(float, int, boolean)
die LBM
erzählen nicht die Newline überschreiten:
int next = lineMeasurer.nextOffset(formatWidth);
int limit = next;
if (limit < totalLength) {
for (int i = lineMeasurer.getPosition(); i < next; ++i) {
char c = string.charAt(i);
if (c == '\n') {
limit = i;
break;
}
}
}
TextLayout layout = lineMeasurer.nextLayout(formatWidth, limit, false);
Referenzen
http://java.sun.com/developer/onlineTraining/Media/2DText/style.html#layout http: //java.sun. com/developer/onlineTraining/Medien/2DText/Code/LineBreakSample.java
Dies ist eine Möglichkeit, aber ich möchte eine Lösung, die nur LineBreakerMeasurer verwendet. –