左側文字、右側文字,中間以點點 .......... 填滿剩餘寬度。
<RelativeLayout ...>
<TextView android:id="@+id/left" android:layout_alignParentLeft="true" ... />
<TextView android:id="@+id/right" android:layout_alignParentRight="true" ... />
<TextView
android:id="@+id/dots"
android:layout_toRightOf="@id/left"
android:layout_toLeftOf="@id/right"
android:ellipsize="marquee"
android:singleLine="true"
android:text=".................................................."
android:gravity="center" />
</RelativeLayout>
程式碼中動態設定 dots.setText("") 並根據寬度計算點數,或直接用超長點串配合 ellipsize 截斷。
public class DottedTextView extends View {
private String leftText, rightText;
private Paint paint = new Paint();
private float dotSpacing = 4f;
@Override
protected void onDraw(Canvas canvas) {
// 1. 繪製左文字
// 2. 計算剩餘寬度 = width - leftWidth - rightWidth - padding
// 3. 循環繪製圓點直到填滿
// 4. 繪製右文字
}
}
使用 LeadingMarginSpan 或 ReplacementSpan 在單一 TextView 中實現,但實作複雜。
若非極高效能要求,方案一最快落地;追求完美對齊且動態內容多,投資自定義 View。