私は私のアプリの下部に垂直方向のスライド式引き出しを持っています。ソフトキーボードが開くと、引き出しのタブが上に押され、キーボードの上に置かれます。私は実際にはキーボードが表示されたときに隠されるように、それをスクリーンの一番下に残しておきたいです。
他に誰かがこの問題に遭遇しますか?それを修正する方法を知っていますか?
アクティビティタグ内のAndroidMainfest.xml
ファイルで、アクティビティのwindowSoftInputMode
flagをadjustPan
に変更するだけです。
詳しくは 公式ドキュメント をご覧ください。
<activity
...
Android:windowSoftInputMode="adjustPan">
</activity>
答えのどれも私のために働きませんでした、しかしこれはトリックをしました:
Android:windowSoftInputMode="adjustNothing"
私の場合、ボタンが押し上げられたのは、それらの上のビューがScrollView
なので、設定したAndroid:windowSoftInputMode
の値に関係なく、キーボードの上に押し上げられたボタンで折りたたまれたためです。
ボタンの上にあるScrollView
にAndroid:isScrollContainer="false"
を設定することで、一番下のボタン列がソフトキーボードで押し上げられるのを防ぐことができました。
アクティビティのonCreate
メソッドに次のコードを追加して、この属性を動的に追加することを試みることができます。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
これは私にとってはうまくいきました。
Android:windowSoftInputMode="adjustPan"
しませんでした。
ここでのこれらの答えは私を助けませんでした。だから私はこれを試してみました:
Android:windowSoftInputMode="adjustResize"
これは魅力のように働きました、今私のアプリのヘッダーは消えません。その滑らかさ。
プログラム的にフラグメントでこれを行うには、次のコードを使用できます。
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
これをonResume()に入れます
Xamarinユーザーの場合、MainActivityクラスのActivity属性にこのコードを追加してください。
WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing
あるいは、このコードWindow.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)
をMainActivityクラスのOnCreateメソッドに追加することもできます。
将来の読者のために。
私はこの問題を具体的に管理したいので、これが私がしたことです:
フラグメントまたはアクティビティから、他のビューを非表示にします(キーボードがアップしている間は必要ありません)、それからこの問題を解決するためにそれらを復元します:
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);
}
}
});
追加する単一行...
あなたのAndroid:windowSoftInputMode="stateHidden|adjustPan"
の必要な活動にmanifest file
を追加してください。
私は解決しました:) :)
これまでのところ、キーボードで隠され続けているtextViewの下にボタンとtextInputフィールドが(横に)並んでいるので、答えは役に立ちませんでしたが、これで問題が解決しました。
Android:windowSoftInputMode="adjustResize"
Android:windowSoftInputMode="stateHidden|adjustNothing"
このコードは機能します。
マニフェストファイルの「activity」に次のコードを追加します。
Android:windowSoftInputMode="adjustResize"
これは私のために働いた最高でした
Android:windowSoftInputMode="adjustNothing"
それを試してみてください!
よく私はこれらの答えを見ました、しかし私の場合私は同じ問題に陥り、あなたのxmlファイルに存在するあなたのScrollviewタグに非常に小さい無邪気な属性を入れることを含む非常に便利で最も簡単な解決策を通して避難しました。あれは
Android:isScrollContainer="false"
がんばろう!
これは私のために働いた
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
スクロールビューの場合:
あなたのAndroidマニフェストにAndroid:windowSoftInputMode="stateHidden|adjustPan"
を追加した後、それでも動作しない場合。
キーボードが表示されるとスクロールビューになり、ボタンや他のオブジェクトがスクロールビューに表示されていない場合は、オブジェクトがキーボードに追従してその位置を移動するため、影響を受ける可能性があります。
あなたのxmlをあなたのボタンがどこにあるかチェックし、それがあなたのスクロールビューブラケットの下にあり、それの外にないことを確かめなさい。
これが役立つことを願っています。 :D
アクティビティのメインウィンドウは、ソフトキーボード用のスペースを確保するためにサイズ変更されません。そうではなく、ウィンドウの内容は自動的にパンされ、現在のフォーカスがキーボードによって隠されることはなく、ユーザーは常に自分が入力している内容を見ることができます。
Android:windowSoftInputMode="adjustPan"
これはあなたが望むもののためのより良い解決策かもしれません。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
これは私のために働いています。
あなたの活動の@マニフェスト:
Android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
これを使ってみてください。
Android:windowSoftInputMode="stateHidden|adjustPan"
このコードはあなたを助けるかもしれません。あなたのoncreate
メソッドでそれを使ってください。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
表示したいアクティビティの下にマニフェストファイルに含めます。ただし、全画面アクティビティを使用しないでください。
Android:windowSoftInputMode="adjustPan"
キーボードを開いたときにビューを隠したいとき。
これをあなたのActivity in manifest file`に追加してください。
Android:windowSoftInputMode = "stateHidden | adjustPan" `
私の場合は、キーボードを隠したままにして、ボタンをクリックした直後にレイアウトを調整する必要があったので、マニフェストにこのコマンドを追加したところ、とてもうまくいきました。
Android:windowSoftInputMode="stateHidden|adjustResize"