Prasham
Prasham

Reputation: 6686

Is there any way to change android:windowSoftInputMode value from java class?

I want to act my tabs to have different windowSoftInputMode properties for each tab. How to access this property from java class when all handling of your tab is done from one single activity?

Is there any way to access this manifest property from java code?

Upvotes: 86

Views: 66037

Answers (5)

Zubair Munir
Zubair Munir

Reputation: 478

In Xamarin Android You Can Do programatically Like This

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

Upvotes: 1

aman
aman

Reputation: 418

According to Prasham's comment, I did this and it saved my life, thanks to him! The EditText and SoftWindowInput mode are quite buggy when you have a layout with ScrollView and you are filling it dynamically.

Since I had gone through this post but had continued to read other answers/comments (like Prashan's one), I decided to write it in a new post.

Below the code I used with my ScrollView:

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

Upvotes: 36

AjOnFire
AjOnFire

Reputation: 2878

Use the following to change the softInputMode for an Activity.

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

Use the following to change the softInput type for an EditText.

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

Thanks to @Eliezer for correction

Upvotes: 129

Shnkc
Shnkc

Reputation: 2158

I aim to use two different modes for tabs. The modes are SOFT_INPUT_ADJUST_RESIZE and SOFT_INPUT_ADJUST_NOTHING.

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

The code line above simply doesn't work by itself. App always behaves in a state ADJUST_NOTHING. However, if windowSoftInputMode="adjustResize" is inserted into <activity> tag in AndroidManifest.xml file, app window is resized as default. Additionally, when you call following line

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

it will behave as expected and nothing is resized.

P.S. improvement to the answer

Upvotes: 10

Sunil Kumar Sahoo
Sunil Kumar Sahoo

Reputation: 53667

You can use the following code programmatically

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

Thanks Deepak

Upvotes: 0

Related Questions