タブごとに異なるwindowSoftInputMode
プロパティを持つようにタブを動作させたいです。タブのすべての処理が単一のアクティビティから行われる場合、Javaクラスからこのプロパティにアクセスする方法は?
Javaコードからこのマニフェストプロパティにアクセスする方法はありますか?
以下を使用して、アクティビティのsoftInputModeを変更します。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
以下を使用して、EditTextのsoftInputタイプを変更します。
mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
訂正してくれた@Eliezerに感謝
Prashamのコメント によると、私はこれを行い、彼のおかげで私の命を救った! EditText
とSoftWindowInput
モードは、ScrollView
を含むレイアウトがあり、それを動的に埋めている場合、非常にバグが多くなります。
私はこの投稿を読み終えたが、他の回答/コメント(プラシャンのコメントなど)を読み続けていたので、新しい投稿に書くことにしました。
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);
期待どおりに動作し、サイズは変更されません。
追伸答えの改善
次のコードをプログラムで使用できます
Android.view.inputmethod.InputMethodManager imm = (Android.view.inputmethod.InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
おかげでディーパック
Xamarinでは、Androidこのようにプログラムで実行できます
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.DetailDesign);
Window.SetSoftInputMode(SoftInput.AdjustPan);
}