【Android】ScrollView滚动到底部的几种方式

2017-05-22  本文已影响1222人  FynnJason

前言:

当我们在使用ScrollView的时候,当前页面超出Scrollview显示页面需要自动滚动到底部时,发现不能完全滚动到底部。这是因为Android下很多函数都是基于消息的,用消息队列来保证同步,所以函数条用多数是异步操作的。当给ScrollView嵌套的布局设置内容时,不会马上显示出来,而是将内容添加到消息队列之后立刻返回,当ScrollView滚动时,添加的内容可能还没显示出来,自然无法滚动到正确的位置。这里给出2种常用的方式:

一、调用post方法

mScrollview.post(new Runnable() {
                                public void run() {
                                    mScrollview.fullScroll(View.FOCUS_DOWN);
                                }
                            });

优点:代码简单。

缺点:当同时添加多个内容时,会出现不能滚动到底部。

二、调用addOnGlobalLayoutListener方法

mScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                        @Override
                        public void onGlobalLayout() {
                            mScrollview.post(new Runnable() {
                                public void run() {
                                    mScrollview.fullScroll(View.FOCUS_DOWN);
                                }
                            });
                        }
                    });

优点:当同时添加多个内容时,可以滚动到底部。

缺点:代码稍多。

上一篇下一篇

猜你喜欢

热点阅读