行为自定义的开关或滑块组件嵌套在可滚动容器中

时间:2018-07-11 09:05:25

标签: codenameone

前段时间,我注意到嵌套的可滚​​动容器的行为很好-例如,几个可在其X轴上滚动的容器嵌套在一个可在其Y轴上滚动的容器中-并决定通过创建custum复合材料来利用这一点基于该组件和snapToGrid。 但是,由于snapToGrid出现了问题,所以这种方法永远无法解决。

当我谈论嵌套可滚动组件的良好行为时,我的意思是您可以轻按嵌套的可滚​​动组件,并且能够在另一轴上滚动组件本身或其滚动父组件也可以很好地工作。

>

在自定义可滚动组件中,我需要做什么以实现与嵌套容器相同的良好行为?

我需要一个这样的组件(例如一个开关),希望它能够水平切换,同时它会注意到达到水平拖动阈值,并且不会影响其父容器的垂直滚动。另一种情况是,在父组件中达到一定程度的垂直滚动阈值之后,它锁定为垂直滚动,父容器应该已经可以正常工作了,对吧?

顺便说一句-对于现成的CN1 OnOffSwitch,这不起作用。当将它们放置在使用BoxLayout.Y嵌套在容器中的容器中时,这种方式表示的列表在点按OnOffSwitches并垂直拖动时无法滚动。

1 个答案:

答案 0 :(得分:0)

代号为1的事件按以下顺序从系统传递:

  • 父母Form-例如您可以覆盖pointer*回调
  • Form听众-例如appPointer*Listener上的Form
  • 如果正在滚动,则滚动
  • 重点内容

我假设您使用焦点来捕获事件,这实际上阻止了子组件捕获事件。

如果您做了这样的事情,则需要使用给定组件上的指针回调将事件自己传递给孩子。您可以使用getComponentAt(x, y)在给定的x / y坐标处找到组件。