切换Fragment时,ScrollView嵌套RecycleView(以及各种AdapterView时),自动定位到AdapterView最底部的问题。
解决思路:
切换fragment,ScrollView总是滑动到底部,只需要记录上一次滑动位置。然后切换回去时,滑动到上次的位置即可。
我通过重写SrcollView
public class SchoolScrollView extends ScrollView {
//ScrollView滑动位置
private int scrollY = 0;
private int scrollX = 0;
public SchoolScrollView(Context context) {
super(context);
//smoothScrollTo(0,0);
}
public SchoolScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
//smoothScrollTo(0,0);
}
public SchoolScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//smoothScrollTo(0,0);
}
/**
* 切换fragment,ScrollView总是滑动到底部
* 记录上一次滑动位置
*/
public void getLastSrcoll(){
scrollX = getScrollX();
scrollY = getScrollY();
}
/**
*
*
*/
public void setLastSrcoll()
{
scrollTo(scrollX, scrollY);
}
}
重写Fragment是否被隐藏的方法
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
mScrollView.getLastSrcoll();
} else {
mScrollView.setLastSrcoll();
}
}