首页 > 解决方案 > 如何将多个容器绑定在一起?

问题描述

我的容器布局如下图所示。

图片供参考

该页面有两个容器,即第一个容器包含句点结尾:及其下方的所有内容,第二个容器是包含句点和值的容器。

我的问题在第二个容器上。它内部有多个具有 BoxLayout.x() 布局的容器,每个容器都可以沿 x 轴滚动。所以我需要帮助的是,我想绑定所有这些容器,这样当我沿 x 轴滚动时,它们都会一起滚动。

标签: codenameone

解决方案


使用Container.addScrollListener()它们中的每一个来绑定一个监听器。当一个人移动时,您需要触发其他人。这是我没有测试的样机代码,但它应该给你的想法。请注意,scrollingOwner 变量旨在阻止递归,但它可能还不够,可能需要更加激进。

 for(cnt : contaienrs) {
     cnt.addScrollListener((scrollX, scrollY, oldscrollX, oldscrollY) -> {
         if(scrollingOwner != cnt) {
            return;
         } 
         scrollingOwner = cnt;
         for(cnt2 : containers) {
            if(cnt2 != scrollingOwner) {
                cnt2.scrollRectToVisible(scrollX, scrollY, scrollingOwner.getWidth(), scrollingOwner.getHeight(), cnt2);
            }
         }
         scrollingOwner = null;
     });
 }

推荐阅读