【问题标题】:How to disable Android Soft Keyboard for a particular activity?如何为特定活动禁用 Android 软键盘?
【发布时间】:2011-08-16 14:50:37
【问题描述】:

我有一个带有一个 EditText 的活动,我只需要输入数字。

现在,我已将 EditText 的输入类型定义为仅数字,并为我的用户绘制了一个漂亮的键盘,但是我还需要确保软键盘不会为我的用户弹出他们点击 EditText。

我已经尝试通过添加通过清单隐藏键盘

android:windowSoftInputMode="stateAlwaysHidden"

在特定活动的清单中,但这对我不起作用,因为一旦用户单击 EditText,键盘就会再次出现。

我尝试过像这样以编程方式做同样的事情

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

但这也不起作用。当用户点击 EditText 时出现键盘。

唯一有效的方法是将 EditText 的 InputType 设置为 null,如下所示:

EditText.setInputType(InputType.TYPE_NULL);

但我不能使用它,因为它允许在其设备上连接了键盘的用户在 EditText 字段中输入字母和其他符号,而我希望每个人都专门只使用键盘在字段中输入数据。

我还应该提到,我目前正在 android 2.1 下测试我的应用程序,但我希望我的解决方案适用于所有版本。任何帮助,将不胜感激。提前致谢。

【问题讨论】:

    标签: android keyboard android-edittext soft-keyboard


    【解决方案1】:

    只是认为可以扩展 EditText 并通过那里处理对软键盘的访问,然后遇到了this question,它对我的​​问题有一个非常优雅的解决方案。

    只需按照步骤操作,这对我来说完美地处理了软键盘。希望它可以帮助遇到此问题的其他人。

    【讨论】:

      【解决方案2】:

      在您需要禁用软键盘的任何 Edittext 中,在该编辑文本的 xml 中添加属性。

      <EditText android:id=".."
                ..
                android:focusable="false" />
      

      它将停止执行软键盘。

      【讨论】:

      • 你不应该那样做。如果是这种情况,那么从之前的 EditText 字段中,单击 Next 不会将此视图变为 requestFocus。
      【解决方案3】:

      在清单文件中的活动中使用android:windowSoftInputMode="stateHidden"。这将起作用。除非您不愿意输入文本,否则不要对 EditText 使用 android:focusable="false"。如果要提供输入,请删除布局文件中 edittext 的该属性。

      【讨论】:

      • 这似乎不起作用:选择 EditText 时,软键盘仍然打开。我相信 windowSoftInputMode 属性旨在控制 Activity 在窗口获得焦点时的行为,而不是一直。
      • 这适用于我想要的:在活动开始时不显示软键盘
      【解决方案4】:

      你可以试试这个。它对我有用:

      getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
                           WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
      

      【讨论】:

        【解决方案5】:

        如果您使用例如 ViewGroup 它允许您使用此方法阻止软键盘:

        view.setDescendantFocusability(view.FOCUS_BLOCK_DESCENDANTS);
        

        因此,视图将在其任何后代之前获得焦点。

        【讨论】:

          【解决方案6】:

          您可以使用此代码:

          <EditText
              .
              .
              android:enabled="false"
              android:focusable="false"
              android:focusableInTouchMode="false"
              android:inputType="numberPassword" />
          

          【讨论】:

          • 聚焦和启用会导致 Edittext 行为混乱
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-08
          • 1970-01-01
          • 2017-01-05
          • 1970-01-01
          • 2011-06-09
          相关资源
          最近更新 更多