scrollview 切换fragment自动滚动到顶部

 

实现:             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的生命周期中(就是以上我写的所有的代码)设置完毕,就完美啦~~没瑕疵!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值