硬键盘无法聚焦editText

时间:2011-05-15 04:36:41

标签: android keyboard android-edittext

我有一个共同的EditText。这很奇怪,因为我在使用硬键盘时无法集中注意力。上下文条件:

  1. 上切换Droid的硬键盘
  2. 开始活动
  3. 点击editText输入
  4. 无法输入。当您按任意键时,editText将失去焦点。
  5. 获得焦点: 按Dpad,您将看到焦点从屏幕中的第一个小部件开始。最后关注目标EditText。然后你可以输入。没有这个,你根本不能输入硬键盘。

    软键盘没有这样的焦点问题。

    我使用的是Android 2.2。这是系统错误吗?

2 个答案:

答案 0 :(得分:9)

如上所述,这显然是硬键盘的错误。如果您的布局中有EditText和TabHost,则在按下第一个键时,EditText将失去焦点,而按键将被发送到活动。这是解决这个问题的方法。在您的活动中实施此功能。

@Override

public boolean onKeyDown(int keyCode, KeyEvent event){

    final EditText myInputField = (EditText) findViewById(R.id.MyInputEditText);
    // this will happen on first key pressed on hard-keyboard only. Once myInputField 
    // gets the focus again, it will automatically receive further key presses.
    if (!myInputField.hasFocus()){ 
        myInputField.requestFocus();
        myInputField.onKeyDown(keyCode, event);
    }
    return super.onKeyDown(keyCode, event);
}

如果您有多个EditText字段,则需要在类变量中跟踪当前关注的EditText并在onKeyDown方法中使用它。

答案 1 :(得分:0)

我有同样的问题。我有点同意杰伊。通常,TabHost和/或TabActivity使用LocalActivityManager来跟踪嵌入的活动或FrameLayout元素中显示的相应ContentStrategy组件。简而言之,这是典型的嵌入式活动/嵌入式视图布局问题。编辑文本位于占据触摸屏空间的最顶层的活动/视图上,而实际上托管此活动/视图的核心活动可能正在抓取InputMethodService焦点并使其远离编辑文本,仅适用于硬键盘场景。软键盘工作正常。

我对编辑文本所做的一项更改是将InputType更改为纯十进制。因此,当编辑文本获得焦点时,软键盘会显示数字键盘而不是字母qwerty键盘。我在Motorla Droid Pro模拟器上运行它,我在Motodev网站的Eclipse插件中进行了更新。显然,当我在为编辑文本提供焦点(并且软键盘显示数字键盘)后尝试从硬键盘输入文本时,在我单击“ALT + 2”后,软键盘被重新加载作为字母键盘,而编辑文本完全失去焦点。

在Froyo版本中,似乎是一个严重的错误,在嵌入其他布局(TabHost的TabLay)中的布局(LinearLayout)中编辑文本视图的硬键盘设备支持不足。