我想让我的标签页具有不同的windowSoftInputMode
属性。当通过单个活动完成选项卡的所有处理时,如何从Java类访问此属性?
有什么方法可以从Java代码访问此清单属性吗?
Answers:
使用以下命令更改Activity的softInputMode。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
使用以下命令更改EditText的softInput类型。
mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
感谢@Eliezer的更正
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
我已经对其进行了测试,并且确实有效
Window#setSoftInputMode
是WindowManager.LayoutParams.SOFT_INPUT_*
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
但是键盘仍然推起我的FrameLayout,它位于其他视图之上。但是,仅此而已,其他观点依然存在。当我将其添加到清单中时,它可以工作,但是我不想将其应用于整个活动。
根据Prasham的评论,感谢他,我做到了这一点,挽救了我的生命!当您使用布局并且要动态填充时,EditText
andSoftWindowInput
模式是很麻烦的ScrollView
。
由于我已经阅读了这篇文章,但继续阅读其他答案/评论(例如Prashan的答案/评论),所以我决定将其写在新的帖子中。
在我的代码下面ScrollView
:
Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
我的目标是为标签使用两种不同的模式。模式是SOFT_INPUT_ADJUST_RESIZE
和SOFT_INPUT_ADJUST_NOTHING
。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
上面的代码行本身无法正常工作。应用程序始终处于状态ADJUST_NOTHING
。但是,如果windowSoftInputMode="adjustResize"
将其插入<activity>
AndroidManifest.xml文件的标记中,则应用程序窗口将被调整为默认大小。此外,当您拨打以下电话
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
它将按预期方式运行,并且不会调整任何大小。
PS改进的答案
windowSoftInputMode="adjustResize"
在清单中设置有助于以后处理此标志。特别是在单个活动中大部分包含碎片的情况下。因此,可以通过编程方式从按需切换SOFT_INPUT_ADJUST_RESIZE
回SOFT_INPUT_ADJUST_NOTHING
按需动态地保持更改活动输入状态。好东西!
您可以以编程方式使用以下代码
android.view.inputmethod.InputMethodManager imm = (android.view.inputmethod.InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
谢谢Deepak
adjustPan
并且adjustResize
可以WindowManager.LayoutParams
上课,您可以找到许多可以在setSoftInputMode
方法中使用的有用常量