我正在尝试在我的应用程序的Viewpager中自定义EdgeEffect。目的是取代蓝色的Overscroll EdgeEffect,即用自定义的红色。所以一开始我编辑了overscroll_edge和相应的overscroll_glow。然后我把它们都放到我的应用程序的/ res / drawable目录中。另外我将EdgeEffect Source File复制到我的应用程序的/ src / android / widget /目录中。我在EdgeEffect中唯一的变化是导入com.my.application.R而不是com.android.internal.R。
但Android不会使用我的自定义android.widget.EdgeEffect而不是Android系统中的那个,因此Viewpager EdgeEffect会一直保持蓝色。我错过了什么吗?
答案 0 :(得分:7)
您可以使用某种反射设置EdgeEffect
的{{1}}颜色:
ViewPager
答案 1 :(得分:2)
您必须在自己的应用包中实施ViewPager
,PagerAdapter
,FragmentstatePagerAdapter
,EdgeEffectCompat
,EdgeEffectCompatIcs
和EdgeEffect
(例如com.yourapp.viewpager)。只进行了更改,即调整导入和包名称。将资源文件复制并编辑到应用程序的res/drawable
,等等,它可以正常工作。
答案 2 :(得分:1)
我可以建议一个非常简单的方法,但是hackish:
int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);
我利用了一个事实,即发光效果实际上是一个共享的Drawable并在其上应用了一个过滤器:http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/