私のアプリケーションでは、リストビューで検索するためのリストビューと検索バーを備えたビューがあります。検索バーをタップすると、フォーカスが移動し、ソフト キーボードが表示されます。リストビューに触れると、キーボードがリストビューの上にあるため、リストビューの多くを見ることができません。
私の質問:リストビューがタッチ/スクロール/...されたかどうかを知るにはどうすればよいですか?また、ソフトキーボードを削除し、編集テキストからフォーカスを削除するにはどうすればよいですか?
私のアプリケーションでは、リストビューで検索するためのリストビューと検索バーを備えたビューがあります。検索バーをタップすると、フォーカスが移動し、ソフト キーボードが表示されます。リストビューに触れると、キーボードがリストビューの上にあるため、リストビューの多くを見ることができません。
私の質問:リストビューがタッチ/スクロール/...されたかどうかを知るにはどうすればよいですか?また、ソフトキーボードを削除し、編集テキストからフォーカスを削除するにはどうすればよいですか?
@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) { }
});
この質問を見て、リストビューがスクロールされたかどうかを知るために、リストビュークラスを拡張して onScrollChanged() メソッドをオーバーライドし、スクロールが操作されたときに必要なことを行うことができるため、キーボードを閉じる方法を確認してください
編集:実際には、リストビューでスクロールの変更をリッスンするOnScrollListenerがあります