我想对Android标准TimePicker
类进行一些小改动。具体来说,我正在尝试更改它,使其以15分钟为增量,而不是1分钟增量。
This post帮助我将分钟值的范围限制为{0,15,30,45},这在我的应用中是必需的。但正如我在后续评论中指出的那样,分钟微调器仍然将前一分钟显示为当前值-1,将下一分钟显示为当前值+ 1,这将创建一个草率感的用户界面。
我查看了相关的Android source code,看来我需要做的更改非常简单。但是当我尝试将源代码复制到我的项目中时,我得到了与package
声明相关的大量错误,在哪里找到Widget
,如何解析R.id
变量等等。
所以我的问题是:
从Android源代码对给定类进行小改动并将其合并到您自己的项目中的最佳方法是什么?
在我的情况下,我只需要对TimePicker
和NumberPicker
进行一些小的更改,但我不确定如何在我的项目中正确设置它。
感谢您的任何建议。
答案 0 :(得分:1)
但是当我尝试将源代码复制到我的项目中时,我得到了与包声明相关的大量错误
您的源文件的目录需要与包名匹配。由于您无法覆盖android.widget.TimePicker
,因此您需要将该类移至新包或为其指定新名称。
在哪里找到Widget
这意味着您已将TimePicker
复制到其中一个软件包中。这很好,但是您需要为import
从其原始包中引用的类添加适当的TimePicker
语句。或者,您需要在TimePicker
中保留(重命名)android.widget
,并将此包添加到您的项目中。这是基本的Java。
如何解决R.id变量
如果TimePicker
依赖于不属于Android SDK的资源,您还需要将这些资源从AOSP复制到您的项目中。
恕我直言,这在摘要中无法轻易回答。一般来说,你会做我上面列出的各种事情。从Android源代码对给定类进行小改动的最佳方法是什么,并将其合并到您自己的项目中?
答案 1 :(得分:0)
最好关闭相关类的子类并覆盖您想要更改的方法。
在Java中,您可以在子类中执行以下操作:
您可以编写一个子类构造函数,以隐式方式或使用关键字super来调用超类的构造函数。