首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于安卓电视的D-pad的KeyEvent

用于安卓电视的D-pad的KeyEvent
EN

Stack Overflow用户
提问于 2020-07-07 09:16:35
回答 1查看 2.7K关注 0票数 4

在活动中,我在工具栏上有TabLayout、ViewPager和菜单按钮(汉堡包)。

使用键盘上的箭头,我将从选项卡移动到查看寻呼机项目,默认情况下没有问题,但我无法在工具栏菜单按钮上实现焦点。

首先,当KeyEvent.KEYCODE_DPAD_UP被逼时,我听不进去,我想知道为什么。

我的代码:

代码语言:javascript
复制
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-语句有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2020-07-07 10:14:48

您是否尝试过重写activity onKeyDown方法并在那里调用您的代码:

代码语言:javascript
复制
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);
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62771912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档