转发请备注原文链接地址:https://www.niwoxuexi.com/blog/android/article/221.html

我们在开发的过程中,经常会遇到ScrollView滚动到底部和顶部的情况,下面是一种简单的设置方法

1,设置ScrollView滚动到顶部

//设置ScrollView滚动到顶部scrollView.fullScroll(ScrollView.FOCUS_UP);

2,设置ScrollView滚动到底部

//设置ScrollView滚动到顶部scrollView.fullScroll(ScrollView.FOCUS_DOWN);

需要注意的是,该方法在页面还没有显示出来的时候是不能直接调用的。
因为Android很多函数都是基于消息队列来同步,在addView完之后,不等于马上就会显示,而是在队列中等待处理。这个时候调用会报错


应对方法通过handler在新线程中更新:例如:

Handlerhandler=newHandler();handler.post(newRunnable(){@Overridepublicvoidrun(){//设置ScrollView滚动到顶部scrollView.fullScroll(ScrollView.FOCUS_UP);}});

当然网上还有另一种解决方案:有点复杂:调用用scrollTo()方法

publicstaticvoidscrollToBottom(finalViewscroll,finalViewinnerView){Handlerhandler=newHandler();handler.post(newRunnable(){publicvoidrun(){if(scroll==null||innerView==null){return;}intoffset=innerView.getMeasuredHeight()-scroll.getHeight();if(offset<0)offset=0;scroll.scrollTo(0,offset);}});}