好记性不如烂笔杆-android学习笔记<十四> EditText 画行,解决光标压线问题
这个问题我在网上看来很多方法,有些看得似懂非懂的,后来自己采用一种比较投机的方法,居然可行,呵呵,拿出来跟大家分享一下。
其实就是把画的线向下偏移一定高度,当然针对不同分辨率,这个值也就不同;
(因为我做的这个默认画15行,之后输入字符时也要检测,要保证两次画的线是一致的)
代码
1 protected void onDraw(Canvas canvas) { 2 int count = getLineCount(); // method entends from TextView. 3 Rect r = mRect; 4 Paint paint = mPaint; 5 6 //第一次画第一条线。以后每次输入,换行时仍然检测,继续画线 7 for (int i = 0; i < count; i++) { 8 int baseline = getLineBounds(i, r); 9 baseline += outY; 10 //增加outY这个值可以调整画线的高度,将线向下偏移一定高度 11 canvas.drawLine(0, baseline + 1, r.right, baseline + 1, paint); 12 } 13 14 //根据判定条件,画出固定条数的线 15 if(count < linecount){ 16 for (int j = count; j < linecount; j++) { 17 float baseline = basicline + outY + j*linedistance; 18 canvas.drawLine(0, baseline + 1, r.right, baseline + 1, paint); 19 //get lineHeight 可以使用getLineHeight(); 20 } 21 } 22 super.onDraw(canvas); 23 }
可能我这个方法比较笨拙,如果哪位高手有更好的办法,先谢谢分享!