0

テキストビューがキーボードのフォーカスを得るアクティビティがあります。

親ビューに 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;
    }

ありがとう

4

1 に答える 1

-1

構成を確認してください。キーボードが外れているかどうかにかかわらず、keyboardHidden の値が保持されます。これは、フェイス キーボード (Blackberry スタイルと考えてください) がなければ機能します。それらが重要な場合は、キーボード フィールドと hardKeyboardHidden フィールドを含む、より複雑なロジックが必要になります。

于 2012-11-15T07:12:58.260 に答える