2011.09.26(3)——— android sample之Notepad(带下划线的TestView)

本文详细介绍了如何在Android Notepad应用中使用自定义的LinedEditText类,该类通过重载onDraw方法,实现了一个带下划线的测试视图。通过XML布局文件配置,实现文本编辑时的特殊视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2011.09.26(3)——— android sample之Notepad(带下划线的TestView)
参考:[url]http://www.cnblogs.com/phinecos/archive/2009/08/27/1555221.html[/url]

notepad里面用于记事的TextView

public static class LinedEditText extends EditText {
private Rect mRect;
private Paint mPaint;

// we need this constructor for LayoutInflater
public LinedEditText(Context context, AttributeSet attrs) {
super(context, attrs);

mRect = new Rect();
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(0x800000FF);
}

@Override
protected void onDraw(Canvas canvas) {
int count = getLineCount();
Rect r = mRect;
Paint paint = mPaint;

for (int i = 0; i < count; i++) {
int baseline = getLineBounds(i, r);

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

super.onDraw(canvas);
}
}


主要工作就是重载onDraw方法,利用从TextView继承下来的getLineCount函数获取文本所占的行数,以及getLineBounds来获取特定行的基准高度值,而且这个函数第二个参数会返回此行的“外包装”值。再利用这些值绘制这一行的线条。

xml

<view xmlns:android="http://schemas.android.com/apk/res/android"
class="com.example.android.notepad.NoteEditor$LinedEditText"
android:id="@+id/note"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:padding="5dip"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:gravity="top"
android:textSize="22sp"
android:capitalize="sentences"
/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值