タブwindowSoftInputMode
ごとに異なるプロパティを持つようにタブを操作したいと思います。タブのすべての処理が単一のアクティビティから実行される場合、Javaクラスからこのプロパティにアクセスするにはどうすればよいですか?
Javaコードからこのマニフェストプロパティにアクセスする方法はありますか?
回答:
以下を使用して、アクティビティのsoftInputModeを変更します。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
EditTextのsoftInputタイプを変更するには、以下を使用します。
mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
訂正してくれた@Eliezerに感謝します
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
私はすでにそれをテストし、実際に動作する
Window#setSoftInputMode
WindowManager.LayoutParams.SOFT_INPUT_*
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
しかし、キーボードは他のビューの上にあるFrameLayoutを押し上げます。しかし、それだけで、他の見解はそのままです。マニフェストに追加すると機能しますが、アクティビティ全体に適用したくありません。
プラシャムのコメントによると、私はこれをしました、そしてそれは彼のおかげで私の命を救いました!EditText
そしてSoftWindowInput
あなたとレイアウトを持っているときのモードは非常にバグがありScrollView
、あなたはそれを動的に充填されています。
私はこの投稿を読みましたが、他の回答/コメント(Prashanのものなど)を読み続けていたので、新しい投稿に書くことにしました。
私が使用したコードの下ScrollView
:
Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
私はタブに2つの異なるモードを使用することを目指しています。モードがあるSOFT_INPUT_ADJUST_RESIZE
とSOFT_INPUT_ADJUST_NOTHING
。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
上記のコード行は、それ自体では機能しません。アプリは常に状態で動作しますADJUST_NOTHING
。ただし、がAndroidManifest.xmlファイルのタグにwindowSoftInputMode="adjustResize"
挿入されている場合<activity>
、アプリウィンドウはデフォルトでサイズ変更されます。また、次の電話をかけると
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
期待どおりに動作し、サイズは変更されません。
答えに対するPSの改善
windowSoftInputMode="adjustResize"
マニフェストで設定すると、後でこのフラグを処理するのに役立ちます。特に、単一のアクティビティにフラグメントがほとんどあるシナリオでは。したがって、プログラムでオンデマンドにSOFT_INPUT_ADJUST_RESIZE
戻すことで、アクティビティの入力状態を動的に変更し続けることができますSOFT_INPUT_ADJUST_NOTHING
。良いですね!
次のコードをプログラムで使用できます
android.view.inputmethod.InputMethodManager imm = (android.view.inputmethod.InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
ありがとうDeepak
adjustPan
とadjustResize
あなたが行くことができるWindowManager.LayoutParams
クラス、あなたが使用することができ、多くの有用な定数を見つけることができるsetSoftInputMode
方法