在Android中的滑动菜单和水平滚动视图

3
在我的应用程序中,我使用了jfeinstein10的侧滑菜单,并且它正常工作。现在,根据要求,我必须在一个页面上有一个水平滚动视图,其中也可以打开这个侧滑菜单。
由于这个侧滑菜单可以通过从左向右滑动屏幕的任何部分来打开,所以水平滚动视图不能与之正常地配合工作,因为侧滑菜单会在滑动水平滚动视图之前截取这个操作并占据整个屏幕。
是否有其他人遇到过同样的问题?

迄今为止有任何解决方案,MiaN KhaLiD? - Wayne
1
实际上,我的滚动视图中的项目减少了。所以,没有它我会更好。 目前,@basilisk在他的答案评论中提到的方法听起来是可行的,即: “可能的解决方案之一是扩展CustomViewBehind类,并覆盖onInterceptTouchEvent。如果事件坐标在您的水平滚动视图上,则返回false,否则调用super。” 我会在有空的时候尝试一下,并相应地更新线程 :) - MiaN KhaLiD
2个回答

3

您可以将触摸模式设置为margin,这样如果您从边缘滑动,菜单就会可见。 使用 slidingmenu.setTouchModeAbove(SlidingMenu.TOUCHMOD_MARGIN);

或者在XML中使用 sliding:touchModeAbove="margin" 希望能够起作用。


让我试试这个,但我更倾向于寻找一种解决方案,其中触摸首先传递给ScrollView,然后再传递给SlidingMenu(我知道我说得含糊不清),但我认为这是我的问题的关键。目前为止,我还没有找到任何解决办法 :) - MiaN KhaLiD
1
目前我已经采用了你的解决方案,但正如我所说,我正在寻找一个触摸处理或运动事件特定的解决方案,如果没有人提供我要寻找的解决方案,我会接受你的答案。目前我已将你的答案标记为有用。再次感谢 :) - MiaN KhaLiD
有相同的问题,有人知道怎么解决吗? - AJit
@AJit,basilisk在他的回答评论中提到的方法听起来是可行的,即:“一种可能的解决方案是扩展CustomViewBehind类,并覆盖onInterceptTouchEvent方法。如果事件坐标位于您的水平滚动视图上,则返回false,否则调用super。” - MiaN KhaLiD
TOUCHMOD_MARGIN 中有一个拼写错误,应该是 TOUCHMODE_MARGIN :) 不管怎么样,谢谢! - Ben Groot

0

实际上,我最初使用的是NavigationDrawer,但要求允许用户在屏幕的任何位置向左滑动并相应地打开。这就是本机NavigationDrawer所缺少的。无论如何,顺便说一句,谢谢你的帮助 :) - MiaN KhaLiD
一个可能的解决方案是扩展CustomViewBehind类,并覆盖onInterceptTouchEvent方法。如果事件坐标在您的水平滚动视图上,则返回false,否则调用super。 - Anuj
好的,我也会查看并相应更新 :) - MiaN KhaLiD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接