gwt offerbox не прячется при прокрутке страницы
Я создал окно подсказки и сгенерировал HTML-страницу с огромным текстом, чтобы я мог прокрутить. 1. Показать список предложений 2. Страница прокрутки
Всплывающее окно со списком предложений перемещается вместе с прокручиваемой страницей, но я хочу, чтобы оно не скрывалось при прокрутке страницы и не перемещалось вместе со страницей.
Насколько я понимаю, подсказка popup имеет абсолютную позицию. Но есть ли какое-то решение не CSS?
Ответ на:
Я попытался добавить обработчик прокрутки в Window, но я обнаружил, что событие обрабатывать только, когда у меня есть и справа от них движется, только в этом случае. Если у меня есть одна прокрутка для прокрутки страницы, как в случае с большим текстом - ничего не вызывает
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());