转载请注明出处http://blog.csdn.net/pkxiuluo01/article/details/17415427
首先给个链接:如何2.3之后如何添加listview 的overscroll(边界回弹)效果,http://blog.csdn.net/androiddevelop/article/details/8155350
正文:
android 2.3 ListView引入 overscroll 的相关api 之后 添加了一个自带的效果 也就是 当滑动到边界的时候,如果再滑动,就会有一个边界就会有一个发光效果
如何去掉这个效果呢?以下有两种情况需要考虑
一.如果不需要使用 overscroll的那种 回弹效果
解决方案:
只需要在布局的 xml中 添加android:fadingEdge="none" 或者在代码中添加setOverScrollMode(OVER_SCROLL_NEVER);
OVER_SCROLL_NEVER的含义是 在任何情况下都不可以overscroll
Set the over-scroll mode for this view. Valid over-scroll modes are OVER_SCROLL_ALWAYS
(default),OVER_SCROLL_IF_CONTENT_SCROLLS
(allow over-scrolling only if the view content is larger than the container), orOVER_SCROLL_NEVER
. Setting the over-scroll mode of a view will have an effect only if the view is capable of scrolling.
AbsListView.java
二.需要使用api提供的 overscroll效果
解决方案:由于需要使用overscroll效果就不能简单的通过设置 scrollMode了 这个时候需要用java 的反射来解决
通过网上搜索的解决方案是 把mEdgeGlowTop 和mEdgeGlowBottom设为null 但是通过运行后发现有会抛出NullPoiontException (测试的系统版本为4.1.1手机为小米2)
不过进一步翻看api源码 我发现只要把mEdgeGlowTop 和mEdgeGlowBottom的mEdge和mGlow设为透明就行了代码如下
注:
1.别忘了try catch 可能抛出的异常
2.为了在低版本不出bug 最好加个版本判断 大于api level 9的 可以使用该方法