android - Android TV 方向键的 KeyEvent
问题描述
在活动中,我在工具栏中有 TabLayout、ViewPager 和菜单按钮(汉堡包)。
默认情况下,使用键盘上的箭头,我正在从选项卡移动到查看寻呼机项目而没有问题,但我无法将焦点放在工具栏菜单按钮上。
首先,当 KeyEvent.KEYCODE_DPAD_UP 被按下时我听不到,我想知道为什么。
我的代码:
viewPager = findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
tabLayout = findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if ((keyEvent.getAction() == KeyEvent.ACTION_UP) && (i == KeyEvent.KEYCODE_DPAD_UP)) {
toolbar.setFocusable(true);
toolbar.setFocusableInTouchMode(true);
tabLayout.setNextFocusUpId(R.id.toolbar);
Log.d(TAG, "KEYCODE_DPAD_UP");
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
tabLayout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
}
return false;
}
});
我的 if 语句有什么问题?
解决方案
您是否尝试过覆盖活动onKeyDown
方法并在那里调用您的代码:
public class YourActivity extends AppCompatActivity {
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
// Your code here
return true;
}
return super.onKeyDown(keyCode, event);
}
}
推荐阅读
- python - matplotlib - 带计数的极性密度图
- django - 发送消息后的 Django 频道,当前选项卡显示 2 条消息(发送者 + 接收者)但其他选项卡不显示任何内容?
- javascript - 在 render() 方法中没有使用 React.cloneElement 传递道具
- javascript - 你如何解释 d3 event.x 和 event.y 坐标?
- mongodb - 如何重命名集合的所有文档中的字段?
- scala - 通过 spark-submit 运行应用程序时出现错误 java.lang.NullPointerException
- javascript - 切换时,搜索框值未更新 [React + Redux]
- java - .OutOfMemoryError:Java 堆空间
- tensorflow - Keras 变量输入
- python - 显示嵌套字典的列