美文网首页Android
Android widget之自定义下滑线的EditText

Android widget之自定义下滑线的EditText

作者: 千年白骨精 | 来源:发表于2018-10-25 15:04 被阅读0次

    项目需求:要求做一个输入框,空的时候带一条下划线,输入文本时,一行时一条下划线,多行时除了最后一行所有行,按照组件的尺寸充满,最后一行按文字长度显示下划线。

    众所周知,系统文字可以自带下划线,但是由于没有文字时,也要显示一条下划线,无法满足需求,而且下划线和文本显示过近,不太美观。所以只好自定义组件

    自定义组件

    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同理。

    相关文章

      网友评论

        本文标题:Android widget之自定义下滑线的EditText

        本文链接:https://www.haomeiwen.com/subject/outctqtx.html