我有一个扩展EditText的类。使用以下代码在Edittext中添加了imageView
setCompoundDrawablesWithIntrinsicBounds(0, 0 ,R.drawable.email_button, 0);
我想在onclick上调用imageview。任何人都可以对此有所了解吗?
由于 Mindus
答案 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;
}
});
这应该以某种方式做到这一点。但它有点棘手。为了节省简单性,您可以将EditText
和ImageView
包裹在水平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写过。希望它能编译。
祝你好运。