テキストビューがキーボードのフォーカスを得るアクティビティがあります。
親ビューに ontouchlistener を設定しました。クリックがテキストビューの範囲外にある場合は、を使用してテキストビューを非表示にしています;
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textView.getWindowToken(), 0);
私の唯一の問題は、キーボードが表示されずに親がクリックされた場合、これらの 2 行が起動し続け、最終的に無駄なトランザクションが発生することです (できるだけ多くの処理を節約したい..)
hasfocus や isfocused などのいくつかのテキストビューメソッドを使用しようとしていますが、テキストビューのみを起動してキーボードショーを行うメソッドを見つけることができないようです...
これが可能かどうかは誰にもわかりますか?
以下のifステートメントは、メソッドを配置したい場所です..
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (textView.*SOME METHOD HERE*?) {
Log.e(TAG, "LOSING FOCUS");
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textView.getWindowToken(), 0);
}
}
return true;
}
ありがとう