首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SlidingPaneLayout点击覆盖

SlidingPaneLayout点击覆盖
EN

Stack Overflow用户
提问于 2013-11-26 13:30:05
回答 1查看 919关注 0票数 1

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

代码语言:javascript
复制
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是主布局

代码语言:javascript
复制
<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的根布局中

代码语言:javascript
复制
<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">

守则:

代码语言:javascript
复制
mLayoutMain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mSlidingPane.isOpen()){
                    mSlidingPane.closePane();
                }
            }
        });

但不起作用。我怎么能这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 13:43:37

事实上,答案比我想象的要简单得多:

代码语言:javascript
复制
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;
    }
}

现在它可以通过点击和滑动关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20218425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档