【问题标题】:prevent EditText to show SoftKeyboard when focused防止 EditText 在聚焦时显示软键盘
【发布时间】:2012-02-17 17:33:17
【问题描述】:

嗯,这让我发疯了...... 我已经读过THISTHISTHIS,但对我没有任何帮助。

场景
这是场景:我的投票应用程序从配置文件中读取调查,问题可能有单个、多个或文本答案。
在第一种情况下,我将 RadioButtons 添加到活动中,在第二种情况下添加复选框,在第三种情况下添加一些多行 EditText。

一切正常,但当向下滚动调查时,焦点会自动接收下一个 EditText,自动显示软键盘。
考虑到我的用户可能想回答第一个问题,然后再回答第二个问题,然后跳到最后一个问题,第二次才返回第三个问题,这非常烦人。

目前在第一个 EditText 获得焦点时,即使用户继续向下滚动,键盘仍会弹出并仍然存在(即使被诅咒的 EditText 最终失去焦点)。

问题
我怎样才能有一个 EditText 显示键盘只有当它被用户点击时,而 NOT 只有当它接收到焦点时?

环境
13 级 API(蜂窝)

提前致谢
Lorenzo(那是认真考虑开一家餐馆)

【问题讨论】:

    标签: android keyboard popup


    【解决方案1】:

    在您的 onCreate(..) 方法中,您可以使用以下方法将 EditText 控件设置为不可聚焦

    EditText.setFocusable(false);
    

    这应该可以防止键盘在滚动时显示。 在您的 onClickListener(..) 中,您可以使用

    重新启用它
    EditText.setFocusableInTouchMode(true);
    EditText.requestFocus();
    

    【讨论】:

      【解决方案2】:

      试着把属性放

      android:descendantFocusability="blocksDescendants"
      

      在你的 scrollView 容器中

      【讨论】:

      • 感谢您的回答费利佩。不幸的是它不起作用:向下滚动 ScrollView 容器,第一个 EditText 仍然接收焦点并且键盘继续弹出。也许继承 EditText?
      • 等一下,有些事情正在发生:将 android:descendantFocusability="blocksDescendants" 添加到外部 ScrollView 而是添加到内部垂直 LinearLayout 键盘没有出现(但似乎 EditTextes 没有收到焦点完全)。也许这是一个很好的起点......
      猜你喜欢
      • 2023-03-05
      • 2011-11-09
      • 1970-01-01
      • 2011-08-26
      • 2011-11-28
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 2014-06-15
      相关资源
      最近更新 更多