AndroidはTextViewをカスタマイズして、単独の行の超えた部分は省略記号として表示します。

1705 ワード

いくつかのよく知られていないbugのため、TextViewの単一の行が一部を超えて省略称として表示されることを実現する時にこの方法を使います。
android:maxLines="1"  
android:ellipsize="end"
省略記号だけを表示する場合もありますが、省略記号は表示されない場合もありますので、ユーザー定義でこの機能を実現してみます。ここでは20 pxのフォントサイズを示します。
TextPaint textPaint = new TextPaint();
textPaint.setTextSize(context.getResources().getDisplayMetrics().scaledDensity * 20);
String displayStr = dataStr;
if (textPaint.measureText(dataStr) > textView.getWidth()) {
    while (textPaint.measureText(displayStr) >= (textView.getWidth() - textPaint.measureText("..."))) {
        displayStr = displayStr.substring(0, displayStr.length() - 1);
    }
    displayStr += "...";
}
textView.setText(displayStr);