Android

Android widget之自定义下滑线的EditText

2018-10-25  本文已影响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同理。

上一篇下一篇

猜你喜欢

热点阅读