我已经创建了一个建议框并生成了包含大量文本的HTML页面,因此我可以滚动。 1.显示建议清单 2.滚动页面
带有建议列表的弹出框随着滚动页面一起移动,但我希望它在页面滚动时不会隐藏,也不会随页面移动。
据我所知,建议弹出窗口具有绝对的位置。但是有一些非css解决方案。
回答:
我已经尝试向Windows添加滚动处理程序,但是当我有并且它们的权利移动时,我发现只处理事件,仅在这种情况下。如果我有一个滚动页面来滚动页面,就像大文本一样 - 没有什么可以调用
答案 0 :(得分:1)
构建SuggestBox
时,您可以提供自己的SuggestOracle
,TextBox
和SuggestionDisplay
。 DefaultSuggestionDisplay
可用于隐藏建议列表。您可以在Window.scrollHandler
。
以下是代码:
MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
oracle.add("one");
oracle.add("two");
oracle.add("three");
TextBox box = new TextBox();
final DefaultSuggestionDisplay display = new DefaultSuggestionDisplay();
SuggestBox suggestBox = new SuggestBox(oracle, box, display);
Window.addWindowScrollHandler(new ScrollHandler() {
@Override
public void onWindowScroll(ScrollEvent event) {
display.hideSuggestions();
}
});
请注意,您需要使用DefaultSuggestionDisplay
- 请参阅已弃用hideSuggestionList 方法的文档。
我希望这个例子解释一切。
我还检查过,如果您不使用自己的SuggestionDisplay
,则无论如何都会使用DefaultSuggestionDisplay
。所以你可以做得更简单。
((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions();
修改强>
如果没有整个窗口滚动但只有某些面板的内容,您可以在面板中添加ScrollHandler
:
panel.addDomHandler(new ScrollHandler() {
@Override
public void onScroll(ScrollEvent event) {
((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions();
}
}, ScrollEvent.getType());