【问题标题】:Handling horizontal scroll处理水平滚动
【发布时间】:2012-07-15 06:14:16
【问题描述】:

ScrollView,我想实现水平滚动。为此,我会收听手指触摸屏幕或移到屏幕上时发送的MotionEvents。它工作得很好,除非我不情愿地将垂直移动与水平移动结合起来。 我注意到垂直移动通过​​放置ACTION_CANCEL 事件来中断ACTION_MOVE 的字符串。在此之后,不会再生成 ACTION_MOVE 事件。

如何防止这些垂直移动取消ACTION_MOVE 事件的发射?

提前感谢您花时间帮助我。

【问题讨论】:

    标签: java android scroll


    【解决方案1】:

    您希望垂直Scrollview 内的子视图调用这行代码:

    getParent().requestDisallowInterceptTouchEvent(true);
    

    查看这篇 SO 帖子了解更多信息:Let parent View assume MotionEvents if child returns false

    【讨论】:

    • 附言。 Frank 提出了一点,我只是假设您有需要滚动的垂直视图,而其中一个子视图需要水平滚动。如果您实际上是在尝试水平滚动ScrollView,那么请按照他的建议...
    • 事实上,我想同时启用垂直和水平滚动。对于垂直滚动,我对ScrollView 的工作方式非常满意。对于水平滚动,我用自己的代码来做。我“只是”想暂时禁用垂直滚动,即水平滚动发生而不受干扰的时间。
    • 这是否意味着有几个子视图相互堆叠,当您将一个子视图带入视图并尝试水平滚动它时,只有它应该?还是包裹在滚动视图中的整个视图都在这样做?你能发布你的xml布局吗?这将使您更容易理解您要移动的内容...
    • 在布局文件中,我声明了一个基于ScrollView的自定义视图。在我的ActivityonResume 函数中,我添加了一个新的自定义视图,该视图属于一个取决于用户选择的选项的类。但它始终是基于ScrollView 的类。垂直滚动由ScrollView 处理,水平滚动由我的代码处理:我根据手指在屏幕上的移动偏移我在onDraw 方法中绘制的内容。
    【解决方案2】:

    你为什么不直接使用HorizontalScrollView 这就是构建这些东西的目的。

    【讨论】:

    • 因为我也想处理垂直滚动。
    • 我知道这不是真的推荐,但你试过把 Horizo​​ntalScrollView 放在 ScrollView 里吗?
    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多