web-dev-qa-db-ja.com

Android:ソフトキーボードがビューを押し上げないようにするにはどうすればよいですか?

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

他に誰かがこの問題に遭遇しますか?それを修正する方法を知っていますか?

329

アクティビティタグ内のAndroidMainfest.xmlファイルで、アクティビティのwindowSoftInputModeflagをadjustPanに変更するだけです。

詳しくは 公式ドキュメント をご覧ください。

<activity
   ...
   Android:windowSoftInputMode="adjustPan"> 
</activity>
561

答えのどれも私のために働きませんでした、しかしこれはトリックをしました:

Android:windowSoftInputMode="adjustNothing"
149
Daniel Douglas

私の場合、ボタンが押し上げられたのは、それらの上のビューがScrollViewなので、設定したAndroid:windowSoftInputModeの値に関係なく、キーボードの上に押し上げられたボタンで折りたたまれたためです。

ボタンの上にあるScrollViewAndroid:isScrollContainer="false"を設定することで、一番下のボタン列がソフトキーボードで押し上げられるのを防ぐことができました。

72

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

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

これは私にとってはうまくいきました。

Android:windowSoftInputMode="adjustPan"

しませんでした。

60
Dom

ここでのこれらの答えは私を助けませんでした。だから私はこれを試してみました:

Android:windowSoftInputMode="adjustResize"

これは魅力のように働きました、今私のアプリのヘッダーは消えません。その滑らかさ。

35
amalBit

プログラム的にフラグメントでこれを行うには、次のコードを使用できます。

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

これをonResume()に入れます

9
ChaturaM

Xamarinユーザーの場合、MainActivityクラスのActivity属性にこのコードを追加してください。

WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing

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

7
Tushar patel

将来の読者のために。

私はこの問題を具体的に管理したいので、これが私がしたことです:

フラグメントまたはアクティビティから、他のビューを非表示にします(キーボードがアップしている間は必要ありません)、それからこの問題を解決するためにそれらを復元します

            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);

                    }
                }
            });
7
Petro

追加する単一行...

あなたのAndroid:windowSoftInputMode="stateHidden|adjustPan"の必要な活動にmanifest fileを追加してください。

私は解決しました:) :)

7
Sravani

これまでのところ、キーボードで隠され続けているtextViewの下にボタンとtextInputフィールドが(横に)並んでいるので、答えは役に立ちませんでしたが、これで問題が解決しました。

Android:windowSoftInputMode="adjustResize"
6
Android:windowSoftInputMode="stateHidden|adjustNothing"

このコードは機能します。

6
amyShamna

マニフェストファイルの「activity」に次のコードを追加します。

Android:windowSoftInputMode="adjustResize"
5
Jose Kurian

これは私のために働いた最高でした

Android:windowSoftInputMode="adjustNothing"

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

5

よく私はこれらの答えを見ました、しかし私の場合私は同じ問題に陥り、あなたのxmlファイルに存在するあなたのScrollviewタグに非常に小さい無邪気な属性を入れることを含む非常に便利で最も簡単な解決策を通して避難しました。あれは

Android:isScrollContainer="false"

がんばろう!

3
Ali Nawaz

これは私のために働いた

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
3
Suresh Pattu

スクロールビューの場合:

あなたのAndroidマニフェストにAndroid:windowSoftInputMode="stateHidden|adjustPan"を追加した後、それでも動作しない場合。

キーボードが表示されるとスクロールビューになり、ボタンや他のオブジェクトがスクロールビューに表示されていない場合は、オブジェクトがキーボードに追従してその位置を移動するため、影響を受ける可能性があります。

あなたのxmlをあなたのボタンがどこにあるかチェックし、それがあなたのスクロールビューブラケットの下にあり、それの外にないことを確かめなさい。

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

2
Yils

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

Android:windowSoftInputMode="adjustPan"

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

2
user3243900
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

これは私のために働いています。

1
Zhang Slardar

あなたの活動の@マニフェスト:

Android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
1
Juan Mendez

これを使ってみてください。

Android:windowSoftInputMode="stateHidden|adjustPan"
1
Ashish Gautam

このコードはあなたを助けるかもしれません。あなたのoncreateメソッドでそれを使ってください。

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

表示したいアクティビティの下にマニフェストファイルに含めます。ただし、全画面アクティビティを使用しないでください。

Android:windowSoftInputMode="adjustPan"
1
user3419461

キーボードを開いたときにビューを隠したいとき。

これをあなたのActivity in manifest file`に追加してください。

Android:windowSoftInputMode = "stateHidden | adjustPan" `

1
Hakim Khan

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

Android:windowSoftInputMode="stateHidden|adjustResize"
1