1

我想在 Android Studio中修改 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 版本。)

我能从这里做什么?提前致谢。

4

2 回答 2

0

我能从这里做什么?

重做尝试 2。在需要时,将其他类(例如PagerAdapter)复制到您的com.example.view包中,并切换您的应用程序代码以引用这些类。基本上,您正在分叉ViewPager,这可能需要您分叉的不仅仅是一个类。

请注意,其他需要 real 的代码ViewPager(例如指标)将无法与您的 fork 一起使用,并且它们本身需要被 fork。

您可能希望考虑是否可以通过简单的子类来处理您的更改。

我知道 Android Studio 不允许直接编辑外部库

此外,正如您稍后在问题中指出的那样,如果您修改库,则每当该库发生更改时,您都必须重新应用这些修改。

另外我不确定如何获取最新版本的源代码

Java 在您的硬盘上,在 Android 存储库中。寻找...sources.jar文件。

于 2016-09-25T18:09:44.463 回答
0

一般来说,除非你真的知道自己在做什么,否则修改第三方库并不是一个好主意。您可以轻松地破坏所有内容,而无需了解所有类和方法依赖项。

一个很好的选择是封装或继承。两者都是有充分根据的面向对象原则。通过封装,您可以创建一个 ViewPager 类型的成员字段,并根据需要委托对它的方法调用。通过继承,您可以扩展 ViewPager 并覆盖您希望提供不同行为的任何方法。继承最有可能是您的最佳解决方案,这样您就可以在通常使用 ViewPager 的任何地方使用您的新类。

于 2016-09-25T18:31:02.350 回答