Sie könnten Paint.measureText(String) verwenden, um die Breite der gesamten Zeichenfolge zu bestimmen, wenn sie mit Ihrem Paint-Objekt gezeichnet wird. Wenn dieser Wert größer als die TextView-Breite ist, wissen wir, dass der Text ellipsentiert wird.
float totalLength = myPaint.measureText("The red fox jumps");
float tvWidth = myTextView.getWidth(); // get current width of TextView
if (tvWidth < totalLength) {
// TextView will display text with an ellipsis
}
Sobald wir den Text kennen abgeschnitten wird, können wir Versuch und Irrtum verwenden, um festzustellen, was die Mindest Text, der auf dem Bildschirm angezeigt werden kann, ist. Dieser Schritt hängt von Ihrer Geschäftslogik ab, sollte jedoch die gleichen Paint-Berechnungen wie der erste Schritt verwenden.
calculateStringWidth("The red fox jumps"); // too large
calculateStringWidth("red fox jumps"); // still too large
calculateStringWidth("fox jumps"); // width is less than TextView, will fit without ellipsis
Große Antwort! Gibt measureText die Breite in Pixeln zurück? –
Ich glaube, die meisten Android-APIs geben Pixel zurück. – fractalwrench