项目需求:要求做一个输入框,空的时候带一条下划线,输入文本时,一行时一条下划线,多行时除了最后一行所有行,按照组件的尺寸充满,最后一行按文字长度显示下划线。
众所周知,系统文字可以自带下划线,但是由于没有文字时,也要显示一条下划线,无法满足需求,而且下划线和文本显示过近,不太美观。所以只好自定义组件
自定义组件
package ---------------------;
import android.content.Context;
import android.graphics.Canvas;
import android.support.annotation.Nullable;
import android.text.Layout;
import android.text.TextPaint;
import android.util.AttributeSet;
/**
* Created by Mouse on 2018/10/25.
*/
public class WithBottomLineTextView extends android.support.v7.widget.AppCompatEditText {
public WithBottomLineTextView(Context context) {
super(context);
}
public WithBottomLineTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Layout layout = getLayout();
TextPaint paint = getPaint();
int lineCount = getLineCount();
int height = getMeasuredHeight();
int lineHeight = height / lineCount;
for (int i = 0; i < lineCount; i++) {
int nh = (i + 1) * lineHeight;
int w = (i == lineCount - 1 && i != 0) ? (int) layout.getLineWidth(i) : getWidth();
canvas.drawLine(0, nh, w, nh, paint);
}
}
}
效果如下:
WechatIMG85.jpeg WechatIMG86.jpeg
TextView同理。
网友评论