使用方向键让 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-项目不在同一布局中
请确保两者都是正确的
我的应用程序中有一个简单的界面 - 屏幕顶部有一个按钮,屏幕中心有一个 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-项目不在同一布局中
请确保两者都是正确的