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



在我的代号一应用程序中,我不需要与Instagram相同的水平滚动,但在某些方面相似。

请看这个视频,它显示了Instagram中的水平滚动: https://www.informatica-libera.net/videoLavoro/instagramScrolling.mp4

我需要的主要功能(与标准水平滚动不同)是,只有在手指移动大于给定的水平空间(我们可以假设 20 毫米)时才能滚动容器,否则容器将恢复到滚动之前的位置(就像 Instagram 一样)。

此外,如果滚动被"接受">(这意味着超过 20 毫米),容器将自动水平滚动,以使内部组件在水平空间左侧完全可见。

例:

假设我有一个包含组件 A、B、C 的容器(带有 BoxLayout.x()),并假设 A、B 和 C 的宽度与屏幕宽度的 75% 相同。

因此,在应用程序启动时,A 完全可见,B 仅对一小部分可见,C 不可见。我需要像 Instagram 这样的滚动,如果被接受(滚动超过 20 毫米),会使 B 在 A 的相同位置完全可见(否则它会撤消滚动)。

所以,在这种水平滚动之后,A将不可见,B完全可见,C只可见一小部分。

是否有任何建议使用代号一实现此行为(如本例所示)?谢谢

您需要将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);

最新更新