展会信息港展会大全

android开发之行之间有分隔线的edittext ,记事本/便签等风格效果
来源:互联网   发布日期:2016-01-06 19:14:22   浏览:1634次  

导读:继承edittext,系统绘制时会在canvas上处理好在正常状态下的EditText内容,咱们获取到行的位置信息,向画板的行的下方添加线条即可,详情见onDraw方法。import android content Context;import android graphi ...

继承edittext,系统绘制时会在canvas上处理好在正常状态下的EditText内容,咱们获取到行的位置信息,向画板的行的下方添加线条即可,详情见onDraw方法。

import android.content.Context;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Rect;

import android.util.AttributeSet;

import android.widget.EditText;

/** 行之间有分隔线的edittext */

public class DividerEditText extends EditText {

private Rect mRect;

private Paint mPaint;

private static final int mLineColor = Color.RED;

private static final int mLineHeight = 3;

public DividerEditText(Context context) {

super(context);

init();

}

public DividerEditText(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public DividerEditText(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}

private void init() {

mRect = new Rect();

mPaint = new Paint();

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setColor(mLineColor);

mPaint.setStrokeWidth(mLineHeight);

}

protected void onDraw(android.graphics.Canvas canvas) {

//先由系统绘制好正常的界面

super.onDraw(canvas);

//获取基本的位置信息

int count = getLineCount();

Rect r = mRect;

Paint paint = mPaint;

//循环在每个行的下面绘制一条横线

for (int i = 0; i < count - 1; i++) {

int baseline = getLineBounds(i, r);

canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);

}

};

}

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港