自定义控件EditText

public class defineEditText extends EditText {
    Context context;
    Drawable d;
public defineEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
        this.context=context;
        inint();
    }

public defineEditText(Context context) {
        super(context);
        this.context=context;
        inint();
    }

    public defineEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        this.context=context;
        inint();
    }

    @SuppressLint("NewApi")
    private void inint() {
        // TODO Auto-generated method stub
        addTextChangedListener(new TextWatcher() {
            
            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
                setdrawable();
            }

            
        });
    }
    private void setdrawable() {
        // TODO Auto-generated method stub
        if(getText().length()>1){
            d=context.getResources().getDrawable(R.drawable.ic_launcher);
            setCompoundDrawablesWithIntrinsicBounds(null, null, d, null);
        }else{
            setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
        }
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        canvas.drawLine(0, getHeight(), getWidth(), getHeight(), getPaint());
        super.onDraw(canvas);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        if(d!=null&&event.getAction()==MotionEvent.ACTION_UP){
            if(event.getX()>getWidth()-50){
            setText("");}
        }
        return super.onTouchEvent(event);
    }
原文地址:https://www.cnblogs.com/androidxufeng/p/3654916.html