通常都是ScrollView滑动而后包裹TabLayout+ViewPager+Fragmentandroid
在Fragment内包含 WebView、ListView、或者GridView之类的ide
一、设置ScrollView获取焦点:布局
mVideoScrollview.setFocusable(true); mVideoScrollview.setFocusableInTouchMode(true); mVideoScrollview.requestFocus();
二、设置ScrollView滑到顶部动画
//第一种:ScrollView有一个滑动到顶部的动做(一个动画); mVideoScrollview.fullScroll(ScrollView.FOCUS_UP); //第二种没有滑动动做直接到顶部 mVideoScrollview.scrollTo(0,0);
三、设置个人ScrollView中的GridView之类的不获取焦点:生命周期
mVideotwoLisview.setFocusable(false);
布局中:ScrollView的布局it
android:focusable="true" android:focusableInTouchMode="true" android:descendantFocusability="beforeDescendants"
为何要在布局和代码中两次设置呢。双重保险嘛~~只在布局或者只在代码中设置有时就会有问题List
通过这两方面的设置,依然不能每次都实现全部目标,从其余fragment切换回来仍是不能自动置顶(好,重点来啦!!敲黑板儿!!)fragment
思路: 1.fragmennt的生命周期;项目中并非使用ViewPager装载Fragment,只是在底部画了四个布局,点击切换Fragment,我在包含ScrollView的fragment里面将Fragment的生命周期全都打印出来,发现并无走,最后仍是问了别人,知道了一个fragment的方法request
@Override public void onHiddenChanged(boolean hidd) { if(!hidd){//当fragment从隐藏到出现的时候 scrollView.scrollTo(0,0); } }
//从Activity回到包含ScrollView的fragment //fragment的生命周期,我在重写了onResume() @Override public void onResume() { super.onResume(); myScrollView.scrollTo(0,0);//从其余Activity回来,让ScrollView置顶 }
代码中,布局中,fragment的生命周期中(就是以上我写的全部的代码)设置完毕scroll