Android如何防止EditText自动获取焦点

7

我有一个非常简单的布局,包括一个EditText和一个按钮。问题在于,当活动启动并且EditText获取焦点时,键盘会立即出现。我已经从XML中删除了</requestFocus>标签,也没有在代码中这样做。如何防止EditText出现这种行为,以便只有用户点击EditText时才会出现键盘呢?


你确定你移除了所有的requestFocus吗?如果你没有在任何地方请求它,它不应该打开你的键盘。也许发布你的代码可以帮助解决问题。 - Stefan de Bruijn
你还有关于这个问题的疑问吗? - Bajirao Shinde
2
在我的父布局上添加android:focusableInTouchMode="true"对我很有效。 - Marcelo Gracietti
3个回答

5
在你的manifest.xml文件中,在activity标签下添加以下内容:
android:windowSoftInputMode="stateHidden"

1
谢谢,问题已解决。你能告诉我那段代码是否会有任何副作用需要注意吗? - Droidman
使用 adjustNothing 的答案更好。如果使用 stateHidden,则在旋转时打开键盘将被关闭。这通常不是期望的行为。 - Sky Kelsey
3
我无法相信有这么多人声称这个非常错误的答案。 - Anderson

4

尝试这个

在你的AndroidManifest.xml文件中写入以下代码

<activity
        android:configChanges="keyboardHidden|orientation"
        android:name=".YourActivityName"
        android:windowSoftInputMode="stateHidden" />

i just added details..


3

在我看来,一个更优雅的解决方案是:

  1. In XML add these lines to the main layout:

    <LinearLayout
        android:id="@+id/mainLayout"
        android:focusable="true"
        android:focusableInTouchMode="true"
        ...
        .../>
    
  2. And In Java in onCreate():

      LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
      mainLayout.requestFocus();
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接