9

私のアプリケーションでは、リストビューで検索するためのリストビューと検索バーを備えたビューがあります。検索バーをタップすると、フォーカスが移動し、ソフト キーボードが表示されます。リストビューに触れると、キーボードがリストビューの上にあるため、リストビューの多くを見ることができません。

私の質問:リストビューがタッチ/スクロール/...されたかどうかを知るにはどうすればよいですか?また、ソフトキーボードを削除し、編集テキストからフォーカスを削除するにはどうすればよいですか?

4

4 に答える 4

17

@androidnoobの回答に基づいて、必要な完全なコードをここに投稿します(この特定の問題を抱えている他の人のために)。

list.setOnScrollListener(new OnScrollListener() {
     public void onScrollStateChanged(AbsListView view, int scrollState) {
             //hide KB
             InputMethodManager imm =  (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
             imm.hideSoftInputFromWindow(colleagueSearch.getWindowToken(), 0);
            }

            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { }
   });
于 2013-01-10T09:15:08.130 に答える
3

この質問を見て、リストビューがスクロールされたかどうかを知るために、リストビュークラスを拡張して onScrollChanged() メソッドをオーバーライドし、スクロールが操作されたときに必要なことを行うことができるため、キーボードを閉じる方法を確認してください

編集:実際には、リストビューでスクロールの変更をリッスンするOnScrollListenerがあります

于 2012-04-25T14:37:07.097 に答える