標籤:
在開發中,我們經常需要更新列表,並將列表拉倒最底部,比如發表微博,聊天介面等等,
這裡有兩種辦法,第一種,使用scrollTo():
[java] view plaincopy
- public static void scrollToBottom(final View scroll, final View inner) {
-
- Handler mHandler = new Handler();
-
- mHandler.post(new Runnable() {
- public void run() {
- if (scroll == null || inner == null) {
- return;
- }
- int offset = inner.getMeasuredHeight() - scroll.getHeight();
- if (offset < 0) {
- offset = 0;
- }
-
- scroll.scrollTo(0, offset);
- }
- });
- }
第一種實現相對比較麻煩,更推薦使用第二種方式,使用fullScrol()
下面我們看一下這個函數:
scrollView.fullScroll(ScrollView.FOCUS_DOWN);滾動到底部
scrollView.fullScroll(ScrollView.FOCUS_UP);滾動到頂部
需要注意的是,該方法不能直接被調用
因為Android很多函數都是基於訊息佇列來同步,所以需要一部操作,
addView完之後,不等於馬上就會顯示,而是在隊列中等待處理,雖然很快,但是如果立即調用fullScroll, view可能還沒有顯示出來,所以會失敗
應該通過handler在新線程中更新
- handler.post(new Runnable() {
- @Override
- public void run() {
- scrollView.fullScroll(ScrollView.FOCUS_DOWN);
- }
- });
Android 控制ScrollView滾動到底部或頂部