androidscrollview滑动到顶端或者指定位置的实现⽅法
在Android开发中很多时候会遇到⼀屏显⽰不下所有内容的现象,那⼤家也知道这个时候肯定会想到⽤scrollview来进⾏滚屏显⽰。
这个时候由于某些需求,会要求在最开始显⽰scrollview的时候就定位到某⼀处,这篇就是来讲这个的哈~
⾸先,scrollView.scrollTo( x, y );这个⽅法是能对滚动条进⾏定位的,这个⼤家都知道。
But,貌似很多时候这个⽅法的调⽤没有什么效果呀……
上⾯所说的调⽤scrollTo⽅法看上去好像并没有起到对滚动条进⾏定位的效果,其实是因为我们是在onCreate⾥调⽤的这个⽅法,⽽在onCreate⽅法没有结束的时候,activity的数据并没有完全加载好,所以这个时候调⽤该⽅法不会有什么实际的效果的。
So,正确的调⽤⽅法来啦~
先定义⼀个runnable接⼝
private Runnable runnable = new Runnable() {
@Override
public void run() {
scrollView.scrollTo(0, 300);// 改变滚动条的位置
}
};
然后在你想要主动定位滚动条位置的地⽅⽤⼀个handler来把这个runnable对象post出来,最好来个延时
handler = new Handler();
handler.postDelayed(runnable, 200);
这个样⼦就可以起到主动定位scrollview到任意位置的作⽤啦~
另外还有⼀些情况是要直接将scrollview定位到最底端显⽰的,可以采⽤如下⽅法
scrollView.scrollTo(0, MeasuredHeight() - Height());
其中,linearLayout是scrollview⾥的⼦view,这样就可以在显⽰的时候就直接显⽰scrollview的最底部了哟~
ScrollView滚动到指定位置
final TextView titleTwo = (TextView) findViewById(R.id.title_two);
final boolean scrollDown = getIntent().getBooleanExtra(SCROLL_DOWN, false);
mRootScrollView = (ScrollView) findViewById();
jquery滚动条滚动到底部if (scrollDown) {
mRootScrollView.post(new Runnable() {
@Override
public void run() {
//To change body of implemented methods use File | Settings | File Templates.
// mRootScrollView.fullScroll(ScrollView.FOCUS_DOWN);
int[] location = new int[2];
int offset = location[1] - MeasuredHeight();
if (offset < 0) {
offset = 0;
}
mRootScrollView.smoothScrollTo(0, offset);
}
});
}
滚到到底部:
mRootScrollView.fullScroll(ScrollView.FOCUS_DOWN);
滚动到顶部:
mRootScrollView.fullScroll(ScrollView.FOCUS_UP);
注意需要post ⼀个runnable,让其在消息队列中执⾏滚动!
第⼀,handler.post(runnable);并不是新开线程,只是让UI主线程去并发执⾏run()⽅法。
第⼆,之所以放在handler⾥,是为了保证View都已经绘制完成。不然,你放在resume()中执⾏,应该也可以的。
第三,smoothScrollTo类似于scrollTo,但是滚动的时候是平缓的⽽不是⽴即滚动到某处。另外,smoothScrollTo()⽅法可以打断滑动动画。
以上这篇android scrollview 滑动到顶端或者指定位置的实现⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论