zoukankan      html  css  js  c++  java
  • 好记性不如烂笔杆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     }

    可能我这个方法比较笨拙,如果哪位高手有更好的办法,先谢谢分享!

  • 相关阅读:
    Extjs面板和布局初探
    XAMPP下apache部署网站,多个虚拟机(空间)配置
    安全配置织梦系统初探参考[转载]
    windows系统如何真正隐藏文件夹[转载]
    Siamese-RPN论文阅读
    线段树求和
    算法要点随记
    map使用示例
    算法准备之c++ sort使用示例
    编程要点随记
  • 原文地址:https://www.cnblogs.com/zjqlogs/p/2814986.html
Copyright © 2011-2022 走看看