屏幕出现时如何删除字段的自动聚焦/键盘弹出窗口?


105

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

如何确保在开始活动时未获得焦点和/或未提高输入面板?

Answers:


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

要么

在清单文件中的application标签中设置活动属性,如下所示

android:windowSoftInputMode="stateHidden"

可以将AndroidManifest.xml文件中的android:windowSoftInputMode设置为其他值。模式通常暗含单个值,但在这种情况下,该值是标志的集合。值的说明:Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
Jeff Muir

145

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

android:windowSoftInputMode="stateHidden"

没为我工作。我把它放在activity_main.xml中。当我将其放入onCreate()时,此方法非常完美。getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
glez

20

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

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

onResume()


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

onCreate()中调用上述方法。除非用户通过选择EditText,否则它将阻止softKeyboard显示。tapping or clicking.

或者只是在android:windowSoftInputMode="stateHidden"中添加Activity标签Manifest.xml


10

这通常是一团糟。我尝试做的第一件事是尝试通过改变视图的焦点。您还必须具有focusable和focusableInTouchMode。

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

    <requestFocus/>
</TextView>

这可行。我觉得这是一种更清洁的方法,但它也取决于您的状况。我接受这个。
JaydeepW

5

拥有另一个视图焦点。默认情况下,当布局放大时,第一个可聚焦视图将获得焦点。您可以通过XML请求关注其他视图:

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

    <requestFocus />
</TextView>

这适用于任何视图。

如果要以编程方式进行操作,可以使用view.requestFocus()


0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}

3
欢迎来到StackOverflow!这与其他论坛不同,如果您想更改答案,只需单击edit链接并进行更改。并且,请尝试通过选择代码并使用“代码示例”按钮{}或按来格式化代码Ctrl+K
彼得·朗

0

添加android:windowSoftInputMode="stateHidden"到清单中的“活动”仅在启动活动时或如Google所说的那样隐藏键盘。

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

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


-1

我还没有尝试过这个方法,也没有在编程计算机附近使用,但是我怀疑以编程方式将焦点发送到父视图,或者某种性质的方法可以解决问题,这很可能是一种解决方法,而不是解决方案,但又无法对其进行测试一个想法


1
我已经尝试过了,但是没有用。我.requestFocus();按了一个按钮,键盘仍然弹出。
Pentium10'5

可以将思想添加为注释
Alberto M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.