在自定义控件上实现View.OnTouchListener

时间:2014-11-30 20:26:30

标签: android android-layout

我创建了一个扩展RelativeLayout的视图,我就是这个,这个视图能够处理触摸事件。所以我想到的是在我的自定义控件中实现OnTouchListener,如下所示:

class MyCustomControl extends RelativeLayout implements View.OnTouchListener {
    public MyCustomControl (Context context) {
         super(context);
    }

    public MyCustomControl (Context context, AttributeSet attrs) {
        super(context, attrs);
    }

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

    other_methods;

    @Override
    public boolean onTouch(View view, MotionEvent event) {
        //event handle here.
    }
}

它不起作用,但如果我这样做,它会:

MyCustomControl control = (MyCustomControl) LayoutInflater.from(context).inflate(R.layout.my_control, null);
control.setOnTouchListener(control);

我应该怎么做才能在我的自定义控件中内置(已定义和激活)touchListener?

1 个答案:

答案 0 :(得分:1)

我知道,已经很晚了,但我通过添加

解决了我的问题
this.setOnTouchListener(this);

到构造函数