像代号One中的Instagram一样水平滚动

时间:2019-04-04 23:38:30

标签: codenameone

在我的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来实现此行为(例如本例中的示例)吗?谢谢

1 个答案:

答案 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);
相关问题