如何在EditText上隐藏Android软键盘
我有一个活动与一些EditText字段和一些按钮作为通常会用于填充这些字段的便利。 但是,当我们用户触摸其中一个EditText字段时,Android软键盘会自动出现。 我希望它默认保持隐藏状态, 除非用户长按菜单按钮。 我有一个解决方案,并找到了几个答案,但到目前为止,我无法让他们工作。
我已经尝试了以下内容:
1 - 在onCreate方法中,
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
2 - 同样在onCreate方法中,
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
3 - 并在清单文件中,
<activity android:name=".activityName" android:windowSoftInputMode="stateAlwaysHidden"/>
这些方法都不起作用。 只要用户点击EditText字段,软键盘就会出现。 如果用户长时间按下菜单键明确显示,我只想让软键盘出现。
为什么这不起作用?
这会帮助你
editText.setInputType(InputType.TYPE_NULL);
编辑:
要显示软键盘,您必须在long key press event of menu button
编写以下代码
editText.setInputType(InputType.TYPE_CLASS_TEXT);
editText.requestFocus();
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
你需要添加清单。 您的清单文件将如下所示:
<activity
...
android:windowSoftInputMode="stateHidden|adjustResize"
...
>
我有时会用一些技巧来做到这一点。 我在布局的顶部放置了一个隐形焦点支架。 这将是例如这样
<EditText android:id="@id/editInvisibleFocusHolder"
style="@style/InvisibleFocusHolder"/>
与这种风格
<style name="InvisibleFocusHolder">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:inputType">none</item>
</style>
然后在onResume我会打电话
editInvisibleFocusHolder.setInputType(InputType.TYPE_NULL);
editInvisibleFocusHolder.requestFocus();
这对我来说很好,从1.6到4.x
链接地址: http://www.djcxy.com/p/16679.html