-1

我刚刚读到这篇如何在 EditText 上添加图像并想知道是否可以在单击时在图标上添加操作...

4

1 回答 1

0

是的,可以CustomEediTtext从创建扩展EditText。检查这个解决方案

创建自定义的EditText类CustomEditText.java:

public class CustomEditText extends EditText {
   private Drawable dRight;
   private Rect rBounds;

   public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
   }
   public CustomEditText(Context context, AttributeSet attrs) {
      super(context, attrs);
   }
   public CustomEditText(Context context) {
      super(context);
   }

   @Override
   public void setCompoundDrawables(Drawable left, Drawable top,
      Drawable right, Drawable bottom)  {
      if(right !=null)
      {
        dRight = right;
      }
      super.setCompoundDrawables(left, top, right, bottom);
   }

   @Override
   public boolean onTouchEvent(MotionEvent event) {

     if(event.getAction() == MotionEvent.ACTION_UP && dRight!=null) {
       rBounds = dRight.getBounds();
       final int x = (int)event.getX();
       final int y = (int)event.getY();

       if(x>=(this.getRight()-rBounds.width()) && x<=(this.getRight()- 
       this.getPaddingRight()) && y>=this.getPaddingTop() && y<=(this.getHeight()-
       this.getPaddingBottom())) {
         //System.out.println("touch");
         this.setText("");
         event.setAction(MotionEvent.ACTION_CANCEL);//use this to prevent the keyboard 
       }
    }
    return super.onTouchEvent(event);
  }

  @Override
  protected void finalize() throws Throwable {
     dRight = null;
     rBounds = null;
     super.finalize();
  }
}
于 2012-07-08T05:34:40.677 回答