SlidingPaneLayout单击覆盖



我创建了一个带有禁用滑动选项的SlidingPaneLayout

public class SlidingPaneLayoutNoSwipe extends SlidingPaneLayout {
    public SlidingPaneLayoutNoSwipe(Context context) {
        super(context);
    }
    public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return false;
    }
}

布局:其中includeSide是侧菜单,includeMain是主布局

<com.mypackage.SlidingPaneLayoutNoSwipe
        android:id="@+id/slidingPaneMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <include
            android:id="@+id/includeSide"
            layout="@layout/layout_side"/>
         <include
            android:id="@+id/includeMain"
            layout="@layout/layout_main"/>
</com.mypackage.SlidingPaneLayoutNoSwipe>

通过按钮打开菜单,在剩余的includeMain上有一个覆盖
我想通过单击覆盖区域来关闭菜单
我试图将onClickListener添加到includeMain:的根布局中

<LinearLayout
            android:id="@+id/layoutMain"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"
            android:background="@drawable/header_background"
            android:orientation="vertical">

代码:

mLayoutMain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mSlidingPane.isOpen()){
                    mSlidingPane.closePane();
                }
            }
        });

但它不起作用。我该怎么做?

事实上,答案比我想象的更简单:

public class SlidingPaneLayoutNoSwipe extends SlidingPaneLayout {
    public SlidingPaneLayoutNoSwipe(Context context) {
        super(context);
    }
    public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if(isOpen()){
            return super.onInterceptTouchEvent(ev);
        }
        return false;
    }
}

现在它可以通过点击关闭&刷卡

最新更新