Android Viewpager EdgeEffect自定义颜色

时间:2013-02-18 16:30:03

标签: android android-viewpager

我正在尝试在我的应用程序的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会一直保持蓝色。我错过了什么吗?

3 个答案:

答案 0 :(得分:7)

您可以使用某种反射设置EdgeEffect的{​​{1}}颜色:

ViewPager

答案 1 :(得分:2)

您必须在自己的应用包中实施ViewPagerPagerAdapterFragmentstatePagerAdapterEdgeEffectCompatEdgeEffectCompatIcsEdgeEffect(例如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/