Android:ソフトキーボードが私のビューを押し上げるのを防ぐにはどうしたらいいですか?


Answers

答えは私のために働かなかったが、これはトリックでした:

android:windowSoftInputMode="adjustNothing"
Question

私はアプリの一番下に垂直スライド式の引き出しを持っています。 ソフトキーボードが開くと、引き出しのタブがプッシュアップされ、キーボードの上に置かれます。 私は実際にそれが画面の下に残るようにし、キーボードが表示されたら隠されるようにします。

誰もがこの問題にぶつかりますか? それを修正する方法を知っていますか?




これは私のために働いた最高だった

android:windowSoftInputMode="adjustNothing"

それを試してみてください!




将来の読者のために。

私はこの問題を具体的にコントロールしたかったので、これは私がしたことです:

フラグメントやアクティビティから、キーボードがアップしている間は不要な他のビューを非表示にしてから、これらのビュー を復元してこの問題を解決します。

            rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Rect r = new Rect();
                    rootView.getWindowVisibleDisplayFrame(r);
                    int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top);

                    if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                    //ok now we know the keyboard is up...
                        view_one.setVisibility(View.GONE);
                        view_two.setVisibility(View.GONE);

                    }else{
                    //ok now we know the keyboard is down...
                        view_one.setVisibility(View.VISIBLE);
                        view_two.setVisibility(View.VISIBLE);

                    }
                }
            });



アクティビティのonCreateメソッドに次のコードを追加することで、この属性を動的に追加できます。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

これは私のために働いたのではなく、

android:windowSoftInputMode="adjustPan"

didnt。




xamarinユーザーの場合、このコードをMainActivityクラスのActivity属性に追加し、

WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing

MainActivityクラスのOnCreateメソッドにこのコードWindow.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)を追加することもできます。




このコードはあなたを助けるかもしれません。 oncreateメソッドで使用します。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);



これまでの回答では、キーボードとキーボードで隠されていたtextViewの下にボタンとtextInputフィールドが並んでいますが、これが私の問題を解決しました。

android:windowSoftInputMode="adjustResize"



アクティビティのメインウィンドウは、ソフトキーボードのためのスペースを確保するためにサイズが変更されません。 むしろ、ウィンドウの内容は自動的にパンされ、現在のフォーカスがキーボードによって隠されることはなく、ユーザーはいつも入力しているものを見ることができます。

android:windowSoftInputMode="adjustPan"

これは、あなたが望むものに対して、より良い解決策かもしれません。




さて、私はこれらの答えを見てきましたが、私の場合は同じ問題に陥ってしまい、xmlファイルにあるScrollviewタグに非常に小さな無害な属性を入れることが非常に簡単で簡単な解決策で避難しました。 あれは

android:isScrollContainer="false"

がんばろう!




私の場合は、キーボードを隠しておく必要がありました。ボタンをクリックした直後にレイアウトを調整する必要があったので、このコマンドをマニフェストに追加しました。

android:windowSoftInputMode="stateHidden|adjustResize"