如何在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

上一篇: How to hide Android soft keyboard on EditText

下一篇: Hide Soft Keyboard on Done Keypress in Android?