实现: 1: fragment间来回切换时ScrollView自动滑到顶部
2: 从包含ScrollView的Fragment中跳转至其他Activity后,返回这个Fragment,fragemt依然自动滑到顶部
3: 即使手动将ScrollView滑动至中间部分,以上两条依然成立
解决方案:1,代码中:
设置ScrollView获取焦点:
scrollView.setFocusable(true);
scrollView.setFocusableInTouchMode(true);
ScrollView.requestFocus();
设置我的ScrollView中的GridView不获取焦点:
gridView.setFocusable(false);
设置ScrollView滑到顶部:
scrollView.fullScroll(ScrollView.FOCUS_UP);//这个是设置ScrollView滑动到顶部的一种方案
scrollView.scrollTo(0,0);//这是scrollView滑动到顶部的第二种方案
//这两种的区别就是当用户切换到包含ScrollView的fragment的时候
//第一种:ScrollView有一个滑动到顶部的动作(一个动画);
//第二种:看不到滑动的动作,直接看到的就是顶部
2,布局中:ScrollView的布局
android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
这里用到了一个fragment的方法
@Override
public void onHiddenChanged(boolean hidd) {
if(!hidd){//当fragment从隐藏到出现的时候
scrollView.scrollTo(0,0);
}
}
//从Activity回到包含ScrollView的fragment
//fragment的生命周期,我在重写了onResume()
<pre name="code" class="java"> @Override
public void onResume() {
super.onResume();
myScrollView.scrollTo(0,0);//从其他Activity回来,让ScrollView置顶
}
就这样,把代码中,布局中,fragment的生命周期中(就是以上我写的所有的代码)设置完毕,就完美啦~~没瑕疵!!!