首页 > 解决方案 > 如何处理组件中的水平指针移动和父容器中的垂直指针移动

问题描述

我实际上之前问过这个问题,但没有得到满意的答案——所以我会尝试以不同的方式提出这个问题。

当 BoxLayout.X 容器嵌套在 BoxLayout.Y 容器中时,可以双向滚动,并且在某个阈值之后,它会保持垂直或水平移动。

我想要的是与组件相同的行为,其中组件衍生品使用 BoxLayout.Y 嵌套在容器中。组件衍生品和它嵌套的容器都应该处理指针移动——组件处理水平移动,容器处理垂直指针移动——直到指针移动了一定距离,然后它应该锁定垂直移动或水平移动,就像它已经可以与嵌套的 Container 组件一起使用一样。

这将极大地增强用户体验,因为 Codename One 开箱即用,例如垂直拖动开关不起作用,因为它会吞噬所有指针事件,不仅是水平移动,而且是所有这些事件。现在 - 上述期望的行为似乎很难实现,因为不能将指针移动事件委托给父容器。

关于如何做到这一点的任何想法?

标签: codenameone

解决方案


显然,当 Component pointer* 方法未被覆盖或覆盖方法调用超级方法时,默认滚动功能有效。

在 Codename One Switch 组件中,父容器的垂直滚动不起作用,因为它只是覆盖了 Component 的 pointer* 方法。请参阅issue 2645中的相应错误


推荐阅读