Android ScrollView 不在最顶部问题

Android About 724 words

场景

开发中遇到了这样的一个问题,界面最外层是ScrollView,然后里面有嵌套了一个ListView还有其他可以获取焦点的View,然后每次打开界面都会自动滚动到最底部,经过一番折腾,发现了一个简单的方法:

方法1

获取ScrollView里面一个上层任意view,然后调用如下方法:

view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus();

方法2(推荐)

在xml中配置,注意,是给ScrollView的子View配置

android:focusable="true"
android:focusableInTouchMode="true"

方法3

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);  
    }  
}); 
Views: 3,575 · Posted: 2019-04-09

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh