如何扩展 Android class 包中的 android.widget 之类的 DayPickerPagerAdapter?
How do you extend an Android class like DayPickerPagerAdapter which is in the android.widget package?
我想从 android.widget 包扩展 DayPickerPagerAdapter 模块。这可能吗?
我想做的是创建我自己的 DatePickerDialog(我还需要扩展它),我可以在其中突出显示多天,而不是只突出显示选定的一天。
我是否必须只复制这些 android 类 的源代码?如果是这样,这样做合法吗?
谢谢!
是的,您可以通过在同一个包中创建新的 class 来从技术上扩展这些 classes(创建文件夹结构以匹配您正在扩展的包),这意味着您会创建这样的东西:
/src/main/java/android/widget/CustomDayPickerPagerAdapter.java
...这将允许您扩展 DayPickerPagerAdapter
class,因为它是包私有的。
但是,这不能保证您能够以您想要的方式成功地操作组件的内部结构,因为大部分功能可能 private
,这意味着您运气不好。
当然你也可以按照你的建议复制这些组件的源代码。这是完全合法的,因为整个 Android 项目是开源的(Apache 2.0 许可)。这样做的缺点是必须定期检查来自上游的更新和错误修复,并且必须将它们重新集成到您的自定义组件中。
我想从 android.widget 包扩展 DayPickerPagerAdapter 模块。这可能吗?
我想做的是创建我自己的 DatePickerDialog(我还需要扩展它),我可以在其中突出显示多天,而不是只突出显示选定的一天。
我是否必须只复制这些 android 类 的源代码?如果是这样,这样做合法吗?
谢谢!
是的,您可以通过在同一个包中创建新的 class 来从技术上扩展这些 classes(创建文件夹结构以匹配您正在扩展的包),这意味着您会创建这样的东西:
/src/main/java/android/widget/CustomDayPickerPagerAdapter.java
...这将允许您扩展 DayPickerPagerAdapter
class,因为它是包私有的。
但是,这不能保证您能够以您想要的方式成功地操作组件的内部结构,因为大部分功能可能 private
,这意味着您运气不好。
当然你也可以按照你的建议复制这些组件的源代码。这是完全合法的,因为整个 Android 项目是开源的(Apache 2.0 许可)。这样做的缺点是必须定期检查来自上游的更新和错误修复,并且必须将它们重新集成到您的自定义组件中。