1

我想对 Android 标准TimePicker类做一个小改动。具体来说,我正在尝试对其进行更改,使其以 15 分钟的增量工作,而不是 1 分钟的增量。

根据我的应用程序的要求,这篇文章帮助我将分钟值的范围限制为 {0、15、30、45}。但正如我在后续评论中指出的那样,分钟微调器仍将前一分钟显示为当前值 - 1,下一分钟显示为当前值 + 1,这会创建一个草率的用户界面。

我查看了相关的Android 源代码,看来我需要进行的更改非常简单。但是当我尝试将源代码复制到我的项目中时,我遇到了与package声明、在哪里查找Widget、如何解析R.id变量等相关的无数错误。

所以我的问题是:

从 Android 源代码对给定类进行小的更改并将其合并到您自己的项目中的最佳方法是什么?

TimePicker就我而言,我只需要对and进行一些小的更改NumberPicker,但我不确定如何在我的项目中正确设置它。

感谢您的任何建议。

4

2 回答 2

1

但是当我尝试将源代码复制到我的项目中时,我得到了与包声明相关的无数错误

您的源文件的目录需要与包名称匹配。而且由于您不能覆盖android.widget.TimePicker,您要么需要将该类移动到一个新包中,要么给它一个新名称。

在哪里可以找到小部件

这意味着您复制TimePicker到其中一个包中。这很好,但是您需要为从其原始包import中引用的类添加适当的语句。TimePicker或者,您需要保留您的(重命名)TimePickerin android.widget,将此包添加到您的项目中。这是基本的Java。

如何解析 R.id 变量

如果TimePicker依赖不属于 Android SDK 的资源,您还需要将这些资源从 AOSP 复制到您的项目中。

从 Android 源代码对给定类进行小幅更改并将其合并到您自己的项目中的最佳方法是什么?

恕我直言,这在摘要中无法轻易回答。一般来说,你会做我上面列出的那些事情。

于 2013-04-18T14:22:20.230 回答
0

您最好继承相关类并覆盖您想要更改的方法。

在 Java 中,您可以在子类中执行以下操作:

  • 继承的字段可以直接使用,就像任何其他字段一样。
  • 您可以在子类中声明一个与超类中同名的字段,从而隐藏它(不推荐)。
  • 您可以在子类中声明不在超类中的新字段。
  • 继承的方法可以直接使用。
  • 您可以在子类中编写一个与超类具有相同签名的新实例方法,从而覆盖它。
  • 您可以在子类中编写一个与超类具有相同签名的新静态方法,从而隐藏它。
  • 您可以在子类中声明不在超类中的新方法。
  • 您可以编写一个子类构造函数来调用超类的构造函数,可以隐式调用,也可以使用关键字 super。

    有关 Java 中的子类化的更多信息

于 2013-04-18T14:19:36.520 回答