一、自定义一个TextView
首先可以用alt+insert生成
public class DashUnderlineTextView extends TextView {
//进行初始化画笔
private Paint mPaint=new Paint();
private Rect mRect=new Rect();
public DashUnderlineTextView(Context context) {
super(context);
}
//Alt+insert生成
public DashUnderlineTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public DashUnderlineTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public DashUnderlineTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
二、进行绘画
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//STROKE:设置描边效果,FILL:填充
mPaint.setStyle(Paint.Style.STROKE);
//设置颜色
mPaint.setColor(Color.LTGRAY);
//让画笔画出虚线
mPaint.setFakeBoldText(true);
PathEffect effects=new DashPathEffect(new float[]{5,5},0);
mPaint.setPathEffect(effects);
int left = getLeft();
int right = getRight();
int paddingTop = getPaddingTop();
int paddingBottom = getPaddingBottom();
int paddingLeft = getPaddingLeft();
int paddingRight = getPaddingRight();
int height = getHeight();
int lineHeight = getLineHeight();
float spcingHeight = getLineSpacingExtra();
int count = (height - paddingTop - paddingBottom) / lineHeight;
for (int i = 0; i < count; i++) {
float baseline=0.0f;
baseline=getLineBounds(i,mRect);
canvas.drawLine(left + paddingLeft, baseline+getLineSpacingExtra() , right - paddingRight, baseline+getLineSpacingExtra(), mPaint);
}
super.onDraw(canvas);
}
三、直接调用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="400dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
tools:context=".MainActivity">
<com.hh.dashview.view.DashUnderlineTextView
android:layout_width="match_parent"
android:layout_height= "wrap_content"
android:textColor="#000000"
android:textSize="25sp"
android:lineSpacingExtra="11dp"
android:text="hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"/>
</LinearLayout>