2011.09.26(3)——— android sample之Notepad(带下划线的TestView)
16lz
2021-01-23
2011.09.26(3)——— android sample之Notepad(带下划线的TestView)
参考:http://www.cnblogs.com/phinecos/archive/2009/08/27/1555221.html
notepad里面用于记事的TextView
主要工作就是重载onDraw方法,利用从TextView继承下来的getLineCount函数获取文本所占的行数,以及getLineBounds来获取特定行的基准高度值,而且这个函数第二个参数会返回此行的“外包装”值。再利用这些值绘制这一行的线条。
xml
参考:http://www.cnblogs.com/phinecos/archive/2009/08/27/1555221.html
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"/>
更多相关文章
- Android为Menu添加item及响应函数
- android之检查service运行状态函数
- Android Studio 基础 之 一键快速实现一个类的 构造函数、getter
- Android Studio如何提示函数用法
- Android Studio怎样提示函数使用方法
- Android NDK编程实现终端功能(调用system函数)
- 浅谈android系统java调用C++函数传参过程
- Android生命周期中几个重要的函数
- Android原生代码调用H5 Web网页中的Javascript函数方法