处理android中的箭头键

时间:2013-03-18 09:59:42

标签: android android-layout android-activity android-tabhost android-tabactivity

我想在android中控制箭头键事件。我在三星I5500手机上测试应用程序。该应用程序包含选项卡。我成功地使用听众捕获事件。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    Log.i(TAG_NAME, "key event: " + keyCode);
    if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
        Log.i(TAG_NAME, "Directional centre pad pressed");
    }
}

例如,第三个标签中的活动包含3个项目的列表视图

Item A
Item B
Item C

我使用右箭头导航到第三个标签,然后单击向下箭头选择上述项目之一。单击DPAD_CENTER键会触发附加到listView的ItemClick侦听器。一切都很好,直到现在。但是,之后,当前选项卡焦点将移至主页(选项卡0)。尝试呈现UI失败的适配器,因为它位于不同的选项卡中。最终它崩溃了。

以前有没有人经历过这个?我在网上搜索过。我找不到足够的价值。

1 个答案:

答案 0 :(得分:0)

如果您正在使用DPAD键查找对不同UI项目的关注,那么您应该设计XML布局以了解要关注的视图。见http://developer.android.com/reference/android/view/View.html#FocusHandling

您需要为每个元素指定nextFocusUp / nextFocusDown / nextFocusRight / nextFocusLeft。

对于ListViews和Tabs,存在一个默认实现,出于同样的原因,您可以向下和向上滚动列表视图。

遵循这些指南将使您的应用对DPAD事件更具响应性,并提供无与伦比的用户交互(使用AIR鼠标/ dpad控制器等时)