如何将ImageView的触摸事件返回到ImageView的父活动

时间:2012-01-01 22:10:26

标签: android android-activity imageview ontouchevent

我有一个Activity,其布局包含自定义ImageView和其他一些视图(一个ListView和另外几个TextView)。根据用户触摸ImageView的位置,我需要更改ListViewTextView的内容。我有一个onTouchEvent监听器在ImageView类中正常工作,但不知怎的,我需要向Activity类发信号通知触发事件发生在ImageView并传递给它一些数据......然后活动可以正确调整所有其他视图。

我想过尝试从ImageView的{​​{1}}处理程序返回“false”,从而让事件进入ImageView的父视图,但我认为它没有父视图查看...只是父亲onTouchEventViewGroup)。

这对我来说感觉像是一个设计问题,但我不确定。

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我认为没有内置的方法可以做到这一点。将您的图像视图类写入全部,以便在更改其内容后进行回调。然后在活动的onCreate方法中,检索图像视图并将活动注册为回调对象。当图像视图完成处理触摸事件时,它只能调用回调方法。

这是一个如何运作的草图:

public class MyImageView extends ImageView {
    public interface OnImageChangedListener {
         public void imageChanged(MyImageView view);
    }

    private OnImageChangedListener mChangeListener;

    public void setOnImageChangedListener(OnImageChangedListener listener) {
        mChangeListener = listener;
    }

    // inside your OnTouchListener:
        public boolean onTouch(View view, MotionEvent event) {
            // make updates, then, if warranted:
            if (mChangeListener != null) {
                mChangeListener.imageChanged(MyImageView.this);
            }
        }

然后,只需声明您的活动以实现MyImageView.OnImageChangedListener并在找到图片视图后调用imageView.setOnImageChangedListener(this)(可能使用findViewById)。

显然,您可以通过缩短方法名称来节省一些输入。更重要的是,如果它有用,你可以在回调方法中添加其他参数。