首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拦截触摸事件SlidingPaneLayout

拦截触摸事件SlidingPaneLayout
EN

Stack Overflow用户
提问于 2013-09-21 13:27:38
回答 2查看 4.9K关注 0票数 2

我有一个带有SlidingPaneLayout的活动,里面有两个片段:左边是ListView,右边是MapFragment。如何能够拦截所生成的触摸事件,以便用户可以在不关闭面板的情况下移动地图?

我想用来关闭/打开右边面板的唯一区域是第一个第四个。在那个地区的右边,我想移动地图。

谢谢

EDIT2:

好了,现在我知道了如何正确地子类SlidingPaneLayout,现在的问题是如何正确捕获触摸事件:

代码语言:javascript
复制
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN
            && event.getX() > (getWidth() / 6)) {
        return false;
    }
    return super.onTouchEvent(event);
}

有了这段代码,我无法滑动地图,它仍然是固定的。问题是,只有在选择正确的面板时(换句话说,只有在显示地图时),我才想拦截触摸。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-21 13:54:26

SlidingPaneLayout有自己的触摸侦听器,所以当您通过调用setOnTouchListener (这是超类视图中的一个方法)来重置它时,您就失去了特定于SlidingPaneLayout的所有onTouch行为。

代码语言:javascript
复制
-------------------------------

下面是一个尝试:创建您自己的SlidingPaneLayout:

构造函数应该是这样的,以便在xml布局中使用视图。

代码语言:javascript
复制
public class MySlidingPaneLayout extends SlidingPaneLayout{

    public MySlidingPaneLayout(Context context, AttributeSet attrs) {
        super(context, attrs);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event){
        if (event.getX() < widthPIX / 6) {
             return super.onTouchEvent(event);// here it works as a normal SlidingPaneLayout
        }
        return false; // here it returns false so that another event's listener should be called, in your case the MapFragment listener
    }
}

在代码中添加MySlidingPaneLayout代替

票数 2
EN

Stack Overflow用户

发布于 2013-09-21 15:00:55

我最终解决了这个问题:如果SlidingPaneLayout是关闭的还是打开的(在我的例子中,我有一个布尔字段值" open "),只要覆盖这个方法和控制就行了。

代码语言:javascript
复制
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    if (!homeActivity.open && event.getX() > (getWidth() / 5)) {
            return false;
        }
    return super.onInterceptTouchEvent(event);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18933157

复制
相关文章

相似问题

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