我有一个带有视图的片段,其中包含一些可单击的元素(ToggleButtons和一个GridView)。

我已经在View上设置了一个onTouchListener,用于检测简单的滑动手势,只要滑动没有在任何可单击项上开始,此方法就可以很好地工作。我希望无论从哪里开始滑动都可以。

我知道ToggleButtons和GridView可能正在消耗touch事件,在扩展ViewGroup的类中,我可以在Activity的子类中重写onInterceptTouchEvent或dispatchTouchEvent。

有什么想法可以扩展Fragment时如何应对这种情况吗?

我在这里找到的最接近的是:Android adding onInterceptTouchEvent to a fragment不幸的是,没有对此问题的答复。

谢谢您的期待。

最佳答案

好的,最后到达那里。

我创建了relativelayout的子类,它是布局的根,然后在其中覆盖了onintercepttouchevent

public class RootLayout extends RelativeLayout {

    public RootLayout(Context context) {
        super(context);
    }

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

    public RootLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev){
        return true;
    }
}


然后用新的子类替换我xml中的RelativeLayout。

<com.walker.leigh.dipswitch2.RootLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


谢谢你的帮助 :)

10-06 01:49