在我的Codename One应用中,我不需要与Instagram相同的水平滚动,而与某些方面类似。
请观看以下视频,该视频显示了Instagram中的水平滚动: https://www.informatica-libera.net/videoLavoro/instagramScrolling.mp4
我需要的主要功能(与标准水平滚动不同)是仅在手指移动超过给定水平空间时才滚动容器的功能(我们可以假设为20mm),否则容器将恢复到滚动之前的位置(就像Instagram一样)。
此外,如果滚动被“接受” (表示超过20mm),则容器将自动水平滚动以使内部组件在水平空间的左侧完全可见。 / p>
示例:
假设我有一个包含BoxComponent.x()的容器,其中包含组件A,B,C,并且假设A,B和C的宽度等于屏幕宽度的75%。
因此,在应用启动时,A完全可见,B仅一小部分可见,C不可见。我需要像Instagram这样的滚动,如果接受了(滚动超过20mm),则可以使B在A 的相同位置完全可见(否则它将取消滚动)
因此,在进行这种水平滚动之后,A将不可见,B完全可见,C仅一小部分可见。
有人建议使用代号One来实现此行为(例如本例中的示例)吗?谢谢
答案 0 :(得分:2)
您需要将swipeActivated
设置为true的Tab。 Tab的唯一缺点是您不能仅将一侧设置为可见。左右都将设置为可见。
根据上面的类比,当B完全可见时,A和C的一部分都将可见,只有通过setTabsContentGap()
设置的大小即可。
一些入门代码:
Tabs tabs = new Tabs();
tabs.setSwipeActivated(true);
tabs.setAnimateTabSelection(true);
tabs.setEagerSwipeMode(true);
tabs.setTabsContentGap(CN.convertToPixels(20, true));
tabs.setUIID("Container");
tabs.setTabUIID("Container");
tabs.getTabsContainer().setUIID("Container");
tabs.getContentPane().setUIID("Container");
您可以开始用以下选项填充标签:
tabs.addTab("", myContent);