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

后端 未结 5 1279
悲哀的现实
悲哀的现实 2020-12-02 12:00

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

相关标签:
5条回答
  • 2020-12-02 12:23

    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);
    
    0 讨论(0)
  • 2020-12-02 12:27

    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

    0 讨论(0)
  • 2020-12-02 12:31

    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

    0 讨论(0)
  • 2020-12-02 12:31

    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);
            }
    
    0 讨论(0)
  • 2020-12-02 12:35

    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

    0 讨论(0)
提交回复
热议问题