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());
Другие вопросы по тегам