1

実行時に仮想キーボードがユーザーによって非表示にされていることを知る方法はありますか? 重複した質問にタグを付ける前に、まず私の質問を理解してください。重複しているように見え、関連するトピックに関する多くの質問も見つけたからです。しかし、答えは見つかりませんでした。

私の問題は、向きの変更などのイベントが発生しているときに、ユーザーがキーボードを最小化したかどうかを知る必要があるため、それに応じてアクションを実行することです。どんな説明でも気軽に質問できるように、非常に具体的にしようとしました。どんな助けでも大歓迎です。事前に感謝します 私の試み

final View activityRootView = findViewById(R.id.ll_main_root);
                activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
                        int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
                        if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                            Toast.makeText(MainActivity.instance, "KeyBoarad" + value, Toast.LENGTH_LONG).show();
                        }
                     }
                });
4

2 に答える 2

1

ちょっと遅いかもしれませんが、クエリと私の提案のためだけです. 私は多少同じ問題に直面していました。実際、私の場合、向きを変更する前にキーボードが表示されていたとしても、向きを変更している間、キーボードが最小化されていました。そのandroid:windowSoftInputMode="stateUnchanged"ため、向きを変えてもキーボードが見えるようにしました。

そして、使用できるように可視性を変更したいという問題がもう1つあるかもしれませんtoggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)

具体的には

InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMgr.toggleSoftInput(0, 0);

それが役立つことを願っています。

于 2012-07-23T11:58:50.133 に答える
1

これとかなり重複しています: Androidで「仮想キーボードの表示/非表示」イベントをキャプチャする方法は?

そしてこれ:Android EditText、ソフトキーボードの表示/非表示イベント?

結論として、これをキャプチャする方法はないようです。画面のサイズをキャプチャしてそのパラメータを使用するハックを使用する人もいます。

于 2012-03-30T08:50:27.150 に答える