使用方向键让 EditText 获得焦点

Make EditText gain focus using dpad

我的应用程序中有一个简单的界面 - 屏幕顶部有一个按钮,屏幕中心有一个 EditText,底部还有 2 个按钮。 现在我想使用 dpad 浏览应用程序的元素,除了 EditText 之外一切正常 - 基本上我可以浏览项目很好,按钮突出显示焦点,但不是 EditText - 即使我点击 dpad 似乎没有反应中心按钮(这样键盘就不会出现)。例如,当我突出显示最顶部的元素并按下方向键时,顶部按钮失去焦点,底部 2 个按钮中的 none 获得焦点,因此看起来是 EditText 获得了焦点,但它不会以任何方式突出显示,也不会显示键盘。当我用光标(或触摸设备)点击它时,一切正常。

我尝试添加 OnKeyListener 进行检查,但似乎没有触发 - 就像 EditText 没有真正获得焦点并且 KeyEvent 没有在 EditText 上触发:

editKanal.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN)
                if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
                    Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
                    return true;
                }

            return false;
        }
    });

谁能告诉我我做错了什么?如何让 EditText 在按下 DPAD_CENTER 时显示键盘?

尝试在点击后加入这一行:

editKanal.requestFocus();

如果这不起作用,你可以 post 你的 XMl 布局吗?

您好,之前遇到过这个问题 最可能的原因是

1-不向下添加焦点

2-项目不在同一布局中

请确保两者都是正确的