android - 覆盖视图函数android
问题描述
我正在尝试在我的应用程序中支持游戏控制器输入,当我关注应用程序的任何元素时,我应该能够接收输入。顺便说一句,它不是游戏。我已尝试按照android 开发人员文档中的本指南进行操作,但无济于事。我面临的问题是我无法覆盖 onKeyDown 函数。
我唯一知道的是,我需要在自定义视图或活动中覆盖此功能,但这就是我遇到的麻烦。
这是我正在尝试的那种代码。
class customView(context:Context) : View(context){
override fun onKeyDown(...){
// Code to handle keydown
}
}
我收到一个错误,说 onKeyDown 不是视图类的方法(抱歉,我现在不在我的电脑旁,所以我不知道确切的错误)
正如另一个注释我也看过这个关于自定义视图的,我真的不明白我应该如何去实现控制器输入。例如,如果我要创建一个新视图,我更愿意覆盖像片段这样的东西,它允许我在整个应用程序中拥有控制器输入。它会更好地覆盖活动吗?
我是 android 和 kotlin 开发的新手,所以如果这真的很简单,我很抱歉。
谢谢
解决方案
你忘记了返回类型
class customView(context: Context) : View(context) {
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
return super.onKeyDown(keyCode, event)
}
}
编辑
要在评论中回答您的问题,为了将此视图添加到 XML 布局,您需要执行以下操作
<package.of.my.costumview.customView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
推荐阅读
- javascript - 如何使用JS向特定位置的数组添加值
- c - 了解不同的#define 声明
- kubernetes - 从其他服务器访问保险库
- rabbitmq - 从 Apache Flink RabbitMQ 源连接器访问消息属性
- sql - 在存储过程中的子句 IF 上选择更多值
- visual-studio - 什么是 TFS 的良好学习资源以及如何将 TFS 与 Visual Studio 一起使用?
- angular - Angular 组件:禁用点击事件
- javascript - 正则表达式仅包含二进制数且不超过 8 位
- jenkins-pipeline - 使用 JUnitFlakyTestDataPublisher 会引发 AbstractMethodError “您必须覆盖contributeTestData”
- session - 如何使用 SAP Connection 保持同一登录状态?