111

我有一个屏幕,其中第一个字段是 EditText,它在启动时获得焦点,还弹出数字输入类型,这很烦人

我如何确保在活动开始时没有获得焦点,和/或没有抬起输入面板?

4

9 回答 9

164
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

或者

在应用程序标记中设置清单文件中的活动属性,如下所示

android:windowSoftInputMode="stateHidden"
于 2011-05-23T10:10:38.083 回答
147

转到您的应用程序清单文件,并为您要禁用自动键盘弹出的活动编写此行。

android:windowSoftInputMode="stateHidden"
于 2010-12-15T19:48:50.580 回答
23

要以编程方式不显示键盘,但默认小部件仍会收到焦点调用:

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

onResume()

于 2012-04-24T12:48:30.900 回答
14
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

在onCreate()中调用上述方法。除非用户通过以下方式选择EditText,否则它会阻止软键盘显示tapping or clicking.

或者简单地android:windowSoftInputMode="stateHidden"在 Activity 标签中添加Manifest.xml

于 2015-08-19T09:06:34.153 回答
11

这通常是一团糟。我尝试的第一件事是尝试通过 . 您还必须具有可聚焦和可聚焦的InTouchMode。

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>
于 2016-04-06T12:37:01.610 回答
5

让另一个视图抓住焦点。默认情况下,当布局膨胀时,第一个可聚焦的 View 将获得焦点。您可以通过 XML 请求关注不同的视图:

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

这适用于任何视图。

如果您想以编程方式执行此操作,您可以使用view.requestFocus().

于 2014-12-10T22:48:35.757 回答
1

在清单中添加android:windowSoftInputMode="stateHidden"到您的 Activity 仅在您启动 Activity 时隐藏键盘,或者如 Google 所说

当用户肯定地向前导航到活动时,而不是因为离开另一个活动而返回活动

要在用户按下后退按钮并从其他活动返回您的活动时也隐藏键盘,请使用android:windowSoftInputMode="stateAlwaysHidden"

于 2020-07-22T08:51:23.733 回答
0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
于 2012-05-24T10:05:37.843 回答
-1

没有尝试过这个,我也没有靠近我的编程计算机,但我怀疑以编程方式将焦点发送到父视图或类似性质的东西可以解决问题 - 这更有可能是一种解决方法而不是解决方案,但再次无法测试它一个想法

于 2010-05-26T19:01:44.170 回答