我使用AbsolutPanel作为主面板.我将另一个AbsolutPanel添加为主面板的标题.现在我将ScrollPanel添加到主面板.ScrollPanel在另一个面板上包含30个按钮.滚动时,最后一个按钮未完全显示.
如果我删除标题AbsolutPanel,则会显示所有内容 - 如果我增加标题面板的高度,则显示更少.包含VerticalPanel的ScrollPanel的可滚动区域与ScrollPanel外部的标题面板的高位完全相同.如果我对主面板使用"Overflow.SCROLL",我可以滚动到verticalPanel的末尾,但在这种情况下滚动页眉面板.
非常感谢每一位帮助 - 谢谢!
为了重现这个问题,我做了以下测试:
AbsolutePanel main = new AbsolutePanel();
RootLayoutPanel.get().add(main);
main.setSize("100px", "100%");
AbsolutePanel header = new AbsolutePanel();
main.add(header);
header.add(new Label("HEADER"));
VerticalPanel content = new VerticalPanel();
ScrollPanel scroll = new ScrollPanel(content);
scroll.setSize("100px", "100%");
main.add(scroll);
for (int i = 0; i < 30; i++)
content.add(new Button("Button :" + i));
Run Code Online (Sandbox Code Playgroud)
由于您使用的是绝对面板,垂直面板和滚动面板的组合,因此它们都不是布局面板.因此,您需要将滚动面板的高度看到某个确定的高度,而不是按百分比给出.
改变你的代码
scroll.setSize("100px", "100%");
Run Code Online (Sandbox Code Playgroud)
至
scroll.setSize("100px", "500px");
Run Code Online (Sandbox Code Playgroud)
而TADA,它可以工作,你得到一个卷轴.
您的 VerticalPanel 基于一个试图填充 100% 父容器的表格。不要认为您的布局是一个好方法。检查https://developers.google.com/web-toolkit/doc/latest/DevGuideUiPanels有关布局的信息。
我建议您使用 DockLayoutPanel 创建带标题的 100% 高度布局。如果您要开始使用面板名称中带有 [Layout] 的面板,则不要使用 VerticalPanel。它们是基于 Div 的。如果您不确定浏览器将如何处理它,那么不要混合使用 div 和表格,这一点很重要。