2016-09-25 25 views
1

我想在Android Studio中自己創建modify the ViewPager類。我目前將support-v4庫作爲庫依賴項,但我知道Android Studio不允許直接編輯外部庫。如何以我可以修改它的方式導入android支持庫?

嘗試1: 我試圖在我的項目中的java.android.support.v4.view包內複製粘貼ViewPager。當我修改和測試它時,它似乎沒有工作,因爲它顯示ViewPager的標準功能而不是修改後的功能。

嘗試2:我試圖改變它的包名com.example.view從支持庫區分。它不能很好地工作,因爲ViewPager的一些功能取決於其正確的軟件包名稱,並導致一些錯誤,如ClassCastException。

嘗試3:我試圖把ViewPager放在一個名爲「lib」的新增模塊中,其中我包含在settings.gradle中,並添加爲我的「app」模塊的依賴項。似乎也沒有工作。

我沒有嘗試過的是擺脫了support-v4 gradle dependency,而是在我的項目中複製粘貼了整個源代碼。這有點多,我不想這樣做,因爲我想保持support-v4庫是最新的,而只需重寫ViewPager類。 (另外我不確定如何獲取最新版本的源代碼,我聽說他們只是開源每個主要的API版本。)

我能從這裏做什麼?提前致謝。

+0

爲什麼要編輯ViewPager?如果你想修改它的功能,你可以擴展它。 –

+0

@ Code-Apprentice我想測試上面鏈接的代碼,因爲它修改ViewPager中的私有方法。不幸的是,代碼無法按預期工作。 – Serpentos

回答

0

我能從這裏做什麼?

重新做嘗試2.在需要的地方,複製其他類(例如,PagerAdapter)插入com.example.view包,並且切換應用程式代碼來引用這些類。基本上,你是分叉ViewPager,這可能需要你分叉的不僅僅是這一類。

請注意,期望真實ViewPager的其他代碼(如指標)不適用於您的分叉,並且本身需要分叉。

您可能希望考慮如果您的更改可以通過簡單的子類來處理。

我知道Android Studio不允許直接編輯外部庫

而且,你注意到你的問題後,如果您修改圖書館,你就必須重新申請這些修改每當圖書館改變時。

而且我不知道如何獲取最新版本的源代碼

的Java是你的硬盤上,在Android庫。尋找...sources.jar文件。

+0

它的工作,謝謝。 作爲一個方面說明,上面鏈接的修改後的ViewPager代碼無法按預期工作,因此修改支持庫是徒勞的。 – Serpentos

0

一般來說,修改第三方庫不是一個好主意,除非你真的知道你在做什麼。在不理解所有類和方法依賴關係的情況下,您可以輕鬆地打破一切。

一個非常好的選擇是封裝或繼承。兩者都是有根據的面向對象原則。通過封裝,您可以創建一個類型爲ViewPager的成員字段,並根據需要委託方法調用它。通過繼承,您可以擴展ViewPager並覆蓋您希望提供不同行爲的任何方法。最有可能的繼承是最適合您的解決方案,以便您可以在任何通常使用ViewPager的地方使用新類。

相關問題