web-dev-qa-db-ja.com

Android:windowSoftInputModeの値をJavaクラスから変更する方法はありますか?

タブごとに異なるwindowSoftInputModeプロパティを持つようにタブを動作させたいです。タブのすべての処理が単一のアクティビティから行われる場合、Javaクラスからこのプロパティにアクセスする方法は?

Javaコードからこのマニフェストプロパティにアクセスする方法はありますか?

74
Prasham

以下を使用して、アクティビティのsoftInputModeを変更します。

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

以下を使用して、EditTextのsoftInputタイプを変更します。

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

訂正してくれた@Eliezerに感謝

108
66CLSjY

Prashamのコメント によると、私はこれを行い、彼のおかげで私の命を救った! EditTextSoftWindowInputモードは、ScrollViewを含むレイアウトがあり、それを動的に埋めている場合、非常にバグが多くなります。

私はこの投稿を読み終えたが、他の回答/コメント(プラシャンのコメントなど)を読み続けていたので、新しい投稿に書くことにしました。

ScrollViewで使用したコードの下:

Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
32
aman

タブには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);

期待どおりに動作し、サイズは変更されません。

追伸答えの改善

9
Shnkc

次のコードをプログラムで使用できます

Android.view.inputmethod.InputMethodManager imm = (Android.view.inputmethod.InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

おかげでディーパック

0

Xamarinでは、Androidこのようにプログラムで実行できます

 protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.DetailDesign);
             Window.SetSoftInputMode(SoftInput.AdjustPan);
        }
0
zubairz