有没有办法改变android:windowSoftInputMode值来自java类?

问题描述 投票:71回答:5

我想用我的标签为每个标签设置不同的windowSoftInputMode属性。当从一个单独的活动完成对标签的所有处理时,如何从java类访问此属性?

有没有办法从java代码访问这个清单属性?

android android-tabhost android-softkeyboard
5个回答
105
投票

使用以下命令更改Activity的softInputMode。

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

使用以下命令更改EditText的softInput类型。

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

感谢@Eliezer的纠正


32
投票

Prasham's comment说,我这样做了,它救了我的命,谢谢他!当您使用EditText进行布局并且动态填充它时,SoftWindowInputScrollView模式非常错误。

由于我已经完成了这篇文章,但继续阅读其他答案/评论(如Prashan的那篇),我决定在一篇新帖子中写下来。

在我使用ScrollView的代码下面:

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

9
投票

我的目标是为标签使用两种不同的模式。模式是SOFT_INPUT_ADJUST_RESIZESOFT_INPUT_ADJUST_NOTHING

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

上面的代码行本身不起作用。应用程序始终处于状态ADJUST_NOTHING。但是,如果将windowSoftInputMode="adjustResize"插入AndroidManifest.xml文件中的<activity>标记,则应用程序窗口将调整为默认值。此外,当您调用以下行时

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

它将按预期运行,没有任何重新调整大小。

附:改进答案


0
投票

您可以以编程方式使用以下代码

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);
        }
© www.soinside.com 2019 - 2024. All rights reserved.