自定义信笺纸样式的EditText

转载自http://ck19860613.iteye.com/blog/743478

效果图如下

带线条的背景

 

图片

换行时自动追加底线

 

图片

可以更改底线颜色

//创建一个继承自EditText的组件

public class MyNote extends EditText{
     private static final String TAG ="MyNote";
     private final String PACKAGE_NAME ="com.ick.testnote";
     private int color;

     public MyNote(Context context, AttributeSet attrs) {
          super(context, attrs);

          //获得自定义属性资源id

          //第一个参数:spaceName

          //第二个参数:属性名

          //第三个参数:如果属性不存在则要使用的默认值
          int resourceId = attrs.getAttributeResourceValue(PACKAGE_NAME, "backgroud", R.color.green);

          //得到id对应的颜色值
          color = getResources().getColor(resourceId);
     }
 
     @Override
     protected void onDraw(Canvas canvas) {
  
          int lineHeight =  this.getLineHeight(); 
          Paint mPaint = getPaint();
          mPaint.setColor(color);
          int topPadding =this.getPaddingTop();
          int leftPadding = this.getPaddingLeft();
          float textSize = getTextSize();
          setGravity(Gravity.LEFT|Gravity.TOP);
          int y = (int) (topPadding + textSize);
          for(int i=0; i<getLineCount(); i++) {
              canvas.drawLine(leftPadding, y+2, getRight()-leftPadding, y+2, mPaint);
              y+=lineHeight;
         }
        canvas.translate(0, 0);
        super.onDraw(canvas);
    }

   /**
    * 设置记事本的编辑框背景线条颜色
    * @param color int type【代表颜色的整数】
    */
    public void setBGColor(int color) {
        this.color = color;
        invalidate();
    }
 
    /**
     * 设置记事本的编辑框背景线条颜色
     * @param colorId int type【代表颜色的资源id】
     */
    public void setBGColorId(int colorId) {
        this.color = getResources().getColor(colorId);
        invalidate();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值