在应用程序加载时隐藏软键盘

Posted

技术标签:

【中文标题】在应用程序加载时隐藏软键盘【英文标题】:Hide soft keyboard on application load 【发布时间】:2011-09-01 15:16:38 【问题描述】:

我有一个应用程序,主视图上有一个EditText 元素。 这意味着当我的应用程序加载时,默认情况下会出现软键盘。

我希望能够在加载时隐藏键盘, 所以在我点击EditText 视图之前它不会显示。

我该如何管理?

【问题讨论】:

【参考方案1】:

在你的androidManifest.xml

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateHidden"  />

更多关于windowSoftInputMode的信息可以在here找到。

当用户进入新的 Activity 时,此设置将隐藏软键盘(即使 EditText 控件获得焦点)。只有当用户点击编辑框控件时才会显示软键盘。

【讨论】:

也许我不太懂英文,你在哪里看到仅当用户单击编辑框时显示的解释?文档说:“当用户选择活动时,软键盘被隐藏——也就是说,当用户肯定地向前导航到活动时,而不是因为离开另一个活动而返回到活动。”。不要误会我的意思。你的解释很清楚。但文档不是。【参考方案2】:

你可以做一些更简单的事情。将此添加到 LinearLayout(或任何其他作为根的布局):

<LinearLayout
...
android:focusable="true"
android:focusableInTouchMode="true"
...
/>

【讨论】:

接受的答案对我不起作用,我已经设置了 stateHidden 。这个建议有效。我将其应用于 XML 布局:父视图组上的 android:focusable="true" 和 android:focusableInTouchMode="true"。【参考方案3】:
InputMethodManager imm = 
    (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

这将在所有情况下隐藏(即使 EditView 具有焦点):

 EditText editView = (EditText) findViewById(R.id.editTextConvertValue);
 editView.setInputType(InputType.TYPE_NULL);

【讨论】:

以上是关于在应用程序加载时隐藏软键盘的主要内容,如果未能解决你的问题,请参考以下文章

当活动在android中启动时如何隐藏软键盘?

弹出软键盘时标题栏隐藏

Android -- 打开时隐藏软键盘

软键盘可见时隐藏状态栏

WebView 选择导致软键盘暂时隐藏然后回来

将网页输入字段滚动到顶部防止被软键盘隐藏