首页 > 解决方案 > 覆盖视图函数android

问题描述

我正在尝试在我的应用程序中支持游戏控制器输入,当我关注应用程序的任何元素时,我应该能够接收输入。顺便说一句,它不是游戏。我已尝试按照android 开发人员文档中的指南进行操作,但无济于事。我面临的问题是我无法覆盖 onKeyDown 函数。

我唯一知道的是,我需要在自定义视图或活动中覆盖此功能,但这就是我遇到的麻烦。

这是我正在尝试的那种代码。

class customView(context:Context) : View(context){
    override fun onKeyDown(...){
        // Code to handle keydown

    }
}

我收到一个错误,说 onKeyDown 不是视图类的方法(抱歉,我现在不在我的电脑旁,所以我不知道确切的错误)

正如另一个注释我也看过这个关于自定义视图的,我真的不明白我应该如何去实现控制器输入。例如,如果我要创建一个新视图,我更愿意覆盖像片段这样的东西,它允许我在整个应用程序中拥有控制器输入。它会更好地覆盖活动吗?

我是 android 和 kotlin 开发的新手,所以如果这真的很简单,我很抱歉。

谢谢

标签: androidkotlin

解决方案


你忘记了返回类型

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"
/>

推荐阅读