首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以在Android中以编程方式滚动ScrollView吗?

我可以在Android中以编程方式滚动ScrollView吗?
EN

Stack Overflow用户
提问于 2011-06-22 17:59:53
回答 16查看 180.6K关注 0票数 154

有没有办法以编程方式将ScrollView滚动到某个位置?

我已经创建了放在ScrollView中的动态TableLayout。所以我想在一个特定的动作上(比如点击一个按钮,等等)特定的行应自动滚动到顶部位置。

有可能吗?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2011-06-22 18:16:31

代码语言:javascript
复制
ScrollView sv = (ScrollView)findViewById(R.id.scrl);
sv.scrollTo(0, sv.getBottom());

sv.scrollTo(5, 10);

票数 172
EN

Stack Overflow用户

发布于 2011-12-31 06:26:28

来自Pragna的答案并不总是有效的,试试这个:

代码语言:javascript
复制
mScrollView.post(new Runnable() { 
        public void run() { 
             mScrollView.scrollTo(0, mScrollView.getBottom());
        } 
});

代码语言:javascript
复制
mScrollView.post(new Runnable() { 
        public void run() { 
             mScrollView.fullScroll(mScrollView.FOCUS_DOWN);
        } 
});

如果您想滚动到开始

代码语言:javascript
复制
mScrollView.post(new Runnable() { 
        public void run() { 
             mScrollView.fullScroll(mScrollView.FOCUS_UP);
        } 
});
票数 209
EN

Stack Overflow用户

发布于 2013-05-15 17:43:32

我想让scrollView直接在onCreateView()之后滚动(而不是在点击按钮之后)。要让它正常工作,我需要使用ViewTreeObserver:

代码语言:javascript
复制
mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            mScrollView.post(new Runnable() {
                public void run() {
                    mScrollView.fullScroll(View.FOCUS_DOWN);
                }
            });
        }
    });

但要注意,每次布局时都会调用它(例如,如果你设置了一个不可见或类似的视图),所以如果你不再需要这个侦听器,不要忘记删除它:

开发工具包上的public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim) Lvl < 16

SDK Lvl >= 16中的public void removeOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6438061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档