Scrollview&RecycleView&ListView&Viewpager的顶部/底部阴影颜色改变
0 利用主题设置
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorEdgeEffect">@color/colorAccent</item>
</style>
但是注意,只能在api21以上设置
以下的方法为反射设置
1 Scrollview
牵扯到的两个属性mEdgeGlowTop,mEdgeGlowBottom,都为EdgeEffect类型
直接去反射改变颜色
这里以 mEdgeGlowTop 为例
Field topMethod = ScrollView.class.getDeclaredField("mEdgeGlowTop");
topMethod.setAccessible(true);
EdgeEffect top = (EdgeEffect) topMethod.get(scrollView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
top.setColor(Color.RED);
}
2 RecycleView
RecycleView有4个属性,mLeftGlow, mTopGlow, mRightGlow, mBottomGlow
采用和Scrollview 同样的方式既可以做到
3 ListView
listview是有一个public的方法的
/**
* Sets the drawable that will be drawn above all other list content.
* This area can become visible when the user overscrolls the list.
*
* @param header The drawable to use
*/
public void setOverscrollHeader(Drawable header) {
mOverScrollHeader = header;
if (mScrollY < 0) {
invalidate();
}
}
/**
* Sets the drawable that will be drawn below all other list content.
* This area can become visible when the user overscrolls the list,
* or when the list's content does not fully fill the container area.
*
* @param footer The drawable to use
*/
public void setOverscrollFooter(Drawable footer) {
mOverScrollFooter = footer;
invalidate();
}
4 viewpager
Viewpager同样有两个属性,是左右的,反射方式同样适用 Scrollview的,属性为mLeftEdge,mRightEdge
滚动视图阴影颜色定制
本文介绍了如何通过主题设置及反射方法更改Scrollview、RecycleView、ListView和Viewpager等组件顶部和底部阴影的颜色,适用于不同API级别的Android应用。
1351

被折叠的 条评论
为什么被折叠?



