拖动SOUTH容器会错误地传播到CENTER容器中的基础元素

时间:2019-04-13 09:31:58

标签: codenameone

我有一个BorderLayout contentPane。在CENTER中有一个全部为SwipeableContainer的元素列表,在SOUTH中,还有另一个SwipeableContainer。 SOUTH容器当然位于CENTER列表的“顶部”,但是即使如此,当我滑动SOUTH Swipeable时,也将滑动基础(半隐藏)的Swipeable。因此,似乎拖动事件会传播到以下列表,即使不应这样做。

下面的示例对此进行了说明:运行代码并将“ SOUTH CONTAINER”拖到左侧,其下方的“ ListElement”容器也将向左滑动。

为确保看到问题,请在SOUTH CONTAINER的 top 处滑动(因此指针也位于最低可见ListElement上方),否则可能是被完全隐藏的ListElement 。

我猜这是一个错误(我认为拖动不应该影响在视觉上被拖动的元素下方部分“隐藏”的元素),但是如果不是这样,我很乐意输入有关如何避免它的信息,因为在视觉上非常令人不安。

//TEST: SWIPEABLE CONTAINER ALSO SWIPES UNDERLYING CONTAINER AS WELL
  Form hi = new Form("Welcome", new BorderLayout());
  Container list = new Container(BoxLayout.y());
  for (int i = 0; i < 20; i++) {
     SwipeableContainer swip = new SwipeableContainer(null, new Label("SWIPE"), new SpanLabel("ListElement " + i + " + a lot of fill text to make the element span over several lines so the dragging of the underlying Swipeable is normally noticeable"));
    list.add(swip);
  }
  list.setScrollableY(true);
  Container cont = hi.getContentPane();
  cont.add(BorderLayout.CENTER, list);
  SwipeableContainer swip = new SwipeableContainer(null, new Label("SOUTHSWIPE"), new Label("SOUTH CONTAINER"));
  cont.add(BorderLayout.SOUTH, swip);
  hi.show();

1 个答案:

答案 0 :(得分:0)

这是一个错误,但是在查看代码时,我很难解决该问题,因为代码没有预见到这种布局。我们可能需要创建一个特殊情况来处理这种类型的布局。我建议使用测试案例代码在问题跟踪器中提交问题。