項目需求:要求做一個輸入框,空的時候帶一條下劃線疙挺,輸入文本時扛邑,一行時一條下劃線,多行時除了最后一行所有行铐然,按照組件的尺寸充滿蔬崩,最后一行按文字長度顯示下劃線。
眾所周知搀暑,系統(tǒng)文字可以自帶下劃線沥阳,但是由于沒有文字時,也要顯示一條下劃線险掀,無法滿足需求沪袭,而且下劃線和文本顯示過近,不太美觀樟氢。所以只好自定義組件
自定義組件
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同理冈绊。