我希望在Android Studio中modify the ViewPager类本身。我目前将support-v4库作为库依赖项,但我知道Android Studio不允许直接编辑外部库。
尝试1: 我尝试在我的项目中的java.android.support.v4.view包中复制粘贴ViewPager。当我对其进行修改和测试时,它似乎无法正常工作,因为它显示的是ViewPager的标准功能,而不是修改后的功能。
尝试2:我尝试将其软件包名称更改为com.example.view,以区别于支持库。由于ViewPager的某些功能依赖于其合法的软件包名称而导致一些错误,例如ClassCastException,因此效果不佳。
尝试3:我试图将ViewPager放在一个名为" lib"的新添加模块中。我在其中包含了settings.gradle并添加为我的" app"模块。似乎也没有工作。
我没有尝试过的是摆脱support-v4 gradle依赖,而是复制粘贴我项目中的整个源代码。这有点多,我不想这样做,因为我想保持support-v4库是最新的,同时只覆盖ViewPager类。 (另外我不知道如何获取最新版本的源代码。我听说他们只是开源每个主要的API版本。)
我可以从这里做些什么?提前谢谢。
答案 0 :(得分:0)
我可以从这里做些什么?
重新尝试2.在需要时,将其他类(例如PagerAdapter
)复制到您的com.example.view
包中,并切换您的应用代码以引用这些类。基本上,你要求ViewPager
,这可能需要你分叉而不仅仅是那一个类。
请注意,其他需要真实ViewPager
的代码(例如指标)将不适用于您的fork,并且它们本身需要分叉。
您可能希望考虑是否可以通过简单的子类来处理您的更改。
我知道Android Studio不允许直接编辑外部库
此外,正如您在问题中稍后所述,如果您修改了库,则只要该库发生更改,您就必须重新应用这些修改。
此外,我不确定如何获取最新版本的源代码
Java位于您的硬盘驱动器上,位于Android Repository中。查找...sources.jar
文件。
答案 1 :(得分:0)
通常,修改第三方库不是一个好主意,除非你真的知道自己在做什么。您可以在不了解所有类和方法依赖性的情况下轻松破解所有内容。
一个非常好的选择是封装或继承。两者都是有根据的面向对象原则。使用封装,您可以创建一个类型为ViewPager的成员字段,并根据需要委托方法调用它。通过继承,您可以扩展ViewPager并覆盖您希望提供不同行为的任何方法。最可能的继承是最好的解决方案,以便您可以在通常使用ViewPager的任何地方使用新类。