アプリの下部に縦型のスライド式引き出しがあります。ソフトキーボードが開くと、引き出しのタブが押し上げられ、キーボードの上に配置されます。画面の下部に残しておき、キーボードが表示されたときに非表示にしたい。
他の誰かがこの問題に遭遇しましたか?それを修正する方法を知っていますか?
アプリの下部に縦型のスライド式引き出しがあります。ソフトキーボードが開くと、引き出しのタブが押し上げられ、キーボードの上に配置されます。画面の下部に残しておき、キーボードが表示されたときに非表示にしたい。
他の誰かがこの問題に遭遇しましたか?それを修正する方法を知っていますか?
回答:
アクティビティタグ内のファイルでアクティビティのwindowSoftInputMode
フラグを切り替えるだけです。adjustPan
AndroidMainfest.xml
詳細については、公式ドキュメントを確認してください。
<activity
...
android:windowSoftInputMode="adjustPan">
</activity>
答えはどれもうまくいきませんでしたが、これはうまくいきました:
android:windowSoftInputMode="adjustNothing"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
この値をプログラムで設定できます
私の場合、ボタンが押し上げられたのは、ボタンの上のビューがだったためで、設定したScrollView
値に関係なく、ボタンがキーボードの上に押し上げられたときにボタンが折りたたまれましたandroid:windowSoftInputMode
。
ボタンのandroid:isScrollContainer="false"
上にあるScrollView
を設定することで、ボタンの下の列がソフトキーボードによって押し上げられるのを回避できました。
この属性を動的に追加onCreate
するには、アクティビティのメソッドに次のコードを追加します。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
これは私にとってはうまくいきましたが、それは:
android:windowSoftInputMode="adjustPan"
しませんでした。
android:windowSoftInputMode="adjustPan"
AndroidManifest.xmlにを追加しましたか?
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
フラグメントで" " を使用する方法?
FragmentActivity
)とそれに接続されたいくつかのビュー(ビューはから拡張RelativeLayout
)がありました。だから私はcontroller.getWindow()...
あなたが言ったように厄介な見解でした。作品
ここでのこれらの答えは私を助けませんでした。だから私はこれを試しました:
android:windowSoftInputMode="adjustResize"
これは魅力のように機能しましたが、私のアプリのヘッダーは消えません。その滑らかさ。
TabLayout
。可視性をに設定すると、問題はなくなりましたView.GONE
。レイアウトを再設計するときかもしれません。
将来の読者のために。
私はこの問題を具体的に制御したかったので、これは私がやったことです:
フラグメントまたはアクティビティから、他のビュー(キーボードが上にある間は不要なビュー)を非表示にし、それらを復元してこの問題を解決します。
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);
}
}
});
view.post(Runnable runnable)
、そこから可視性を使用して設定しました。それは私にとって素晴らしいことでした
これは私のために働いた
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
これまでのところ、ボタンとtextInputフィールド(並べて表示)がキーボードによって非表示にされ続けているため、回答は役に立ちませんでしたが、これで問題が解決しました。
android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="stateHidden|adjustNothing"
このコードは機能します。
これは私のために働いた最高でした
android:windowSoftInputMode="adjustNothing"
それを試してみてください!
私の場合、キーボードを非表示にしておく必要があり、ボタンをクリックした直後にレイアウトを調整する必要があるため、このコマンドをマニフェストに追加するだけで非常に正しくなりました。
android:windowSoftInputMode="stateHidden|adjustResize"
それらのどれも私のために働いていません、これを試してください
private void scrollingWhileKeyboard() {
drawerlayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
try {
drawerlayout.getWindowVisibleDisplayFrame(r);
int screenHeight = drawerlayout.getRootView().getHeight();
int keypadHeight = screenHeight - r.bottom;
if (keypadHeight > screenHeight * 0.15) {
tabLayout.setVisibility(View.GONE);
} else {
tabLayout.setVisibility(View.VISIBLE);
}
} catch (NullPointerException e) {
}
}
});
}
アクティビティのメインウィンドウは、ソフトキーボード用のスペースを確保するためにサイズ変更されません。むしろ、ウィンドウのコンテンツは自動的にパンされるため、現在のフォーカスがキーボードによって隠されることがなく、ユーザーは入力内容を常に確認できます。
android:windowSoftInputMode="adjustPan"
これはあなたが望むもののためのより良い解決策かもしれません。
このコードはあなたを助けるかもしれません。oncreate
メソッドで使用してください。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
表示するアクティビティの下のマニフェストファイルに含めます。ただし、フルスクリーンアクティビティを使用しないようにしてください。
android:windowSoftInputMode="adjustPan"