4

当我尝试在真正的 Android TV 中测试它时,我正在为电视开发一个 Android 应用程序,我无法使用遥控器按钮向上、向下、向左、向右导航到任何按钮或任何东西。

我已经搜索过它,我发现我必须使用(启用 D-pad Navigation)但我不知道如何使用它,我没有找到任何代码或教程我的应用程序是如此简单。它使动态布局彼此并排,每个布局只有一个按钮和一个回收视图。

4

2 回答 2

4

默认情况下,Android 实现了从布局分布推断的基本 D-Pad 导航。如果您主要使用列表或线性布局,它会很好地工作。

主要区别在于视图处于聚焦状态而不是选中状态,因此如果您使用自定义背景(即按钮),它可能看起来好像不起作用,而实际上是。

您可以使用键盘上的光标键在模拟器上试用。

或者,如果推断的导航不起作用,您可以为每个视图定义 nextFocusUp、Down、Left 和 Right。

这一切都在官方文档中得到了很好的解释:https ://developer.android.com/training/tv/start/navigation.html

于 2017-08-31T07:44:51.670 回答
2

尝试这个,

@Override
    public boolean onKeyDown(int keyCode, KeyEvent events) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_DPAD_CENTER:

                break;
            case KeyEvent.KEYCODE_DPAD_LEFT:

                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:

                break;
            case KeyEvent.KEYCODE_DPAD_DOWN:

                break;
            case KeyEvent.KEYCODE_DPAD_UP:

                break;
            case KeyEvent.FLAG_KEEP_TOUCH_MODE:

                break;
        }
        return super.onKeyDown(keyCode, events);
    }

如果万一 call 不是上面的 getInside ,那么试试这个:

  @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_DPAD_CENTER:

                break;
            case KeyEvent.KEYCODE_DPAD_DOWN:

                break;
            case KeyEvent.KEYCODE_DPAD_UP:

                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:

                break;
            case KeyEvent.KEYCODE_DPAD_LEFT:

                break;
            case KeyEvent.FLAG_KEEP_TOUCH_MODE:

                break;
        }
        return super.dispatchKeyEvent(event);
    }
于 2018-11-19T09:45:48.310 回答