2016-09-28 12 views
0

提案のボックスを作成し、巨大なテキストを含むHTMLページを生成しましたので、スクロールすることができます。 1.提案リストを表示 2.スクロールページgwt suggestboxがページ上に表示されないスクロール

提案リスト付きのポップアップボックスは、スクロールされたページと共に移動しますが、ページがスクロールしたり移動したりしないようにしたいと思います。

私は、ポップアップは絶対的な位置を示唆することを理解しています。しかし、いくつかの非CSSソリューションです。


回答:

私はウィンドウに追加スクロールハンドラを試してみたが、私はtwo scrollsし、それらの権利の動きを持っているとき、私はこの場合にのみ、それが唯一のイベントを処理していました。私は大きなテキストの場合のようにページをスクロールする一つの巻物を持っている場合 - 何も

答えて

1

SuggestBoxを構築する場合、あなたがSuggestOracleTextBoxSuggestionDisplay自分自身を提供することができますを呼び出しません。 DefaultSuggestionDisplayは、提案リストを非表示にするために使用できます。あなたはWindow.scrollHandlerでそれを行うことができます。 非推奨hideSuggestionList法上のドキュメントを参照してください - あなたはDefaultSuggestionDisplayを使用する必要があること、

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(); 
    } 
}); 

注:ここでは

はコードです。

この例ですべて説明していただければ幸いです。

私は、あなた自身がSuggestionDisplayを使用していないと、とにかくDefaultSuggestionDisplayを使用していることを確認しました。だからあなたはそれをもっと簡単にすることができます。

((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions(); 

EDIT:ウィンドウ全体がスクロールが、いくつかのパネルのコンテンツのみされていない場合は

、あなたがパネルにScrollHandlerを追加することができます。

panel.addDomHandler(new ScrollHandler() { 
    @Override 
    public void onScroll(ScrollEvent event) { 
     ((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions(); 
    } 
}, ScrollEvent.getType()); 
+0

で追加を参照してください –

+0

@DmitriyAltsyvanovich - コンテナに 'ScrollHandler'を追加しようとしました。私の編集を見てください。 – Adam

+0

はい、ありがとうございます。私はスクロールで正しいdivを見つけてハンドラを追加しました - それはすべての私のトラブルを修正します) –

関連する問題