TextView下划线效果
支持行间距的设置,padding属性的设置,功能简单,代码也简单。
代码
@SuppressLint("AppCompatCustomView")
public class LinedTextView extends TextView {
public LinedTextView(Context context) {
this(context,null);
}
public LinedTextView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public LinedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setPadding(0,0,0,5);
}
@Override
protected void onDraw(Canvas canvas) {
Paint mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(1);
mPaint.setColor(Color.BLACK);
int right = getRight();
int paddingTop = getPaddingTop();
int paddingBottom = getPaddingBottom();
int paddingLeft = getPaddingLeft();
int paddingRight = getPaddingRight();
float height = getHeight()-paddingBottom-paddingTop;
float lineCount = getLineCount();
float lineHeight =(height/lineCount);
float baseline=0;
for (int i = 0; i < lineCount; i++) {
baseline = lineHeight * (i + 1) + paddingTop;
canvas.drawLine(0 + paddingLeft, baseline, right - paddingRight, baseline, mPaint);
}
super.onDraw(canvas);
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
}