版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
ScrollView嵌套了ListView或者GridView时,ListView等子View有时候会抢占焦点,导致ScrollView会自动滑动至其已获取焦点的子控件的顶部。
解决方法:
可以手动scrollTo()或者smoothScrollTo()。
觉得上面方法不好玩不爽的话,那就重写ScroolView的computeScrollDeltaToGetChildRectOnScreen方法,将返回值设为0,使ScrollView内布局产生变化时,不会正确滚动到focus child位置。
/**
* 解决嵌套listview gridview抢占焦点 显示的问题
* @param rect
* @return
*/
@Override
protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
//禁止scrollView内布局变化后自动滚动
return 0;
}