Android ScrollView 不在最顶部问题
Android 大约 724 字场景
开发中遇到了这样的一个问题,界面最外层是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);
}
});
阅读 1910 · 发布于 2019-04-09
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Java 语法糖 - 可变参数阅读 86
-
JavaScript 判断浏览器是否处于无痕模式阅读 4593
-
OpenResty 使用 Certbot 生成 SSL 证书阅读 869
-
软考-系统架构设计师:企业应用集成(EAI)阅读 1967
-
Git 命令之回退到指定 commit阅读 1554
-
走进 Rust:Drop trait阅读 1071
-
Linux grep 转义特殊符号阅读 6855
-
编译时提示 virtual memory exhausted: Cannot allocate memory阅读 1991
-
软考-系统架构设计师:数据库优化阅读 1460
-
Java 并发编程之 ThreadPoolExecutor 线程池源码解析阅读 356