在edittext中调用imageView

时间:2015-04-15 12:21:52

标签: android android-layout android-edittext android-imageview

我有一个扩展EditText的类。使用以下代码在Edittext中添加了imageView

setCompoundDrawablesWithIntrinsicBounds(0, 0 ,R.drawable.email_button, 0);

我想在onc​​lick上调用imageview。任何人都可以对此有所了解吗?

由于 Mindus

2 个答案:

答案 0 :(得分:0)

这不是直截了当的。您已为EditText设置声明一个onTouchListener,检索可绘制边界并检查其边界是否与触摸事件相交

editText.setOnTouchListener(new OnTouchListener() {
       @Override
       public boolean onTouch(View v, MotionEvent event) {
          int rightCompundDrawableWidth = 0;
          Drawable drawable = editText.getCompoundDrawables()[2/* right */];
          if (drawable == null) {
                return false;
           }
           rightCompundDrawableWidth = drawable.getBounds().width();
           if (event.getAction() == MotionEvent.ACTION_UP
              && event.getX() >= (editText.getRight() - rightCompundDrawableWidth)) {
                    // clicked do something
                    return false;
          }

            return false;
        }
    });

这应该以某种方式做到这一点。但它有点棘手。为了节省简单性,您可以将EditTextImageView包裹在水平LinearLayout中,并在onClickListener上设置ImageView

答案 1 :(得分:0)

您没有将图像视图调用到EditText中。 你所做的是在EditText上绘制图像。

你应该写一个像

这样的组件
public class MyComponent extends FrameLayout implements View.OnClickListener{

   private ImageView mImageView;
   private EditText mEditText;

   public MyComponent(Context context, AttributeSet attrs){
      super(context,attrs)
      if(!isInEditMode)
      init();
   }

   public MyComponent(Context context, AttributeSet attrs, DefaultBlah blah){
      super(context,attrs, blah) // Other constructors... You should add them all.
      if(!isInEditMode)
      init();
   }

   private void init(){
      inflate(getContext(), R.layout.segment_mycomponent, this);
      mImageView = (ImageView) findViewById(R.id.image);
      mImageView.setOnClickListener(this);

      mEditText = (EditText) findViewById(R.id.edittext);
   }


   @Override
   public void onClick(View v){
      int id = v.getId();
      if(id == R.id.image){
          // TODO Do your stuff here.
      }
   }


}

XML(segment_mycomponent)

<merge
   android:width = "wrap_content"
   android:height = "wrap_content">

   <ImageView
        android:id="+@id/image"
        android:width = "wrap_content"
        android:height = "wrap_content" />

   <EditText
        android:id="+@id/edittext"
        android:width = "wrap_content"
        android:height = "wrap_content" />
<merge/>

我没有IDE写过。希望它能编译。

祝你好运。