Android中蓝牙键盘tab/上下左右键的处理

ViewRootImpl.processKeyEvent
ViewGroup.focusSearch
FocusFinder.findNextFocus
ViewGroup.requestFocus

Tab键和上下左右键的区别是,Tab是根据View的添加顺序查找的,上下左右是根据x/y最近距离来找的。

private View findNextFocus(ViewGroup root, View focused, Rect focusedRect,
            int direction, ArrayList focusables) {
...
        switch (direction) {
            case View.FOCUS_FORWARD:
            case View.FOCUS_BACKWARD:
                return findNextFocusInRelativeDirection(focusables, root, focused, focusedRect,
                        direction);
            case View.FOCUS_UP:
            case View.FOCUS_DOWN:
            case View.FOCUS_LEFT:
            case View.FOCUS_RIGHT:
                return findNextFocusInAbsoluteDirection(focusables, root, focused,
                        focusedRect, direction);
            default:
                throw new IllegalArgumentException("Unknown direction: " + direction);
        }

你可能感兴趣的:(Android中蓝牙键盘tab/上下左右键的处理)