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

时间:2011-05-26 12:17:56

标签: android android-tabhost android-softkeyboard

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

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

5 个答案:

答案 0 :(得分:104)

使用以下命令更改活动的softInputMode。

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

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

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

感谢@Eliezer进行更正

答案 1 :(得分:32)

根据Prasham's comment,我做到了这一点,它救了我的命,感谢他!当您拥有EditText的布局并且您正在动态填充它时,SoftWindowInputScrollView模式非常错误。

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

在我与ScrollView

一起使用的代码下方
Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

答案 2 :(得分:9)

我的目标是为标签使用两种不同的模式。模式为SOFT_INPUT_ADJUST_RESIZESOFT_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);

它将按预期运行,并且不会调整任何大小。

P.S。改进答案

答案 3 :(得分:0)

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

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

由于 迪帕克

答案 4 :(得分:0)

在Xamarin Android中,您可以通过编程方式执行此操作

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