重写editText组件以实现记事本的下划线功能

来源:互联网 发布:淘宝hd 5.0.1 编辑:程序博客网 时间:2024/05/16 05:58
一、重写EditText方法:

     记事本应用中,将编写记事界面改写成了有行数的形式。默认的EditText不支持该功能,故此重新EditText方法,自己划线。
    public class MyEditText extends EditText{
     public MyEditText(Context context){
         super(context);
     }
     @Override
     protected void onDraw(Canvas canvas){
         super.onDraw(canvas);
         int height=getLineHeight();//  获取到线的高度
         int i=(int)(getHeight()/height);//  总的高度/线的高度
         i=Math.max(i, getLineCount());//  取行数与i的最大值
          int a=height/2;
         Paint myPaint=new Paint();//定义一个新的画笔
         myPaint.setColor(color.black);//画笔的颜色是黑色的
         for(int j=1;j<i;j++){
             canvas.drawLine(0,height*(j)+25,getWidth(), height*(j)+25, myPaint);//当前(x1,y1)和(x2,y2)以及画笔颜色
                        }
                 }
         }

二、实现在EditText中划线功能:

       1) 用java代码实现:
                contentText = new MyEditText(this);//新建一个MyEditText()
        contentText.setHint("编辑。。。");
        contentText.setMinLines(20);
        contentText.setTextSize(23);
            contentText.setGravity(Gravity.TOP);
        layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        layoutParams.setMargins(10, 10, 30, 30);
        linearLayout.addView(contentText, layoutParams);
       2) 用xml文件实现:
                android: layout_width="match_parent"
                android: layout_height="fill_parent"
                android: gravity ="top"
                android: textSize="25sp"
                android: minLines="10"

三、实现字符串的分割:(记事中的前五个字符作为记事本的title)

      // String text = getIntent().getStringExtra(DataBase.TEXT);//将记事本的内容取出放在text中

     //  head.setText(text.substring(0, 5));//取text的前五个字符作为标题

       String text = getIntent().getStringExtra(DataBase.TEXT);
        String path = getIntent().getStringExtra(DataBase.IMAGE_PATH);
        int textLEN=text.length();
        Log.d(TAG, "textLEN="+textLEN);
        if(textLEN<=5){
            head.setText(text);
        }
        else{
            head.setText(text.substring(0, 5));//进入某一记事察看相关内容时显示的title            
        }

0 0
原创粉丝点击