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);
}
});
阅读 2755 · 发布于 2019-04-09
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Android 自定义底部弹出对话框阅读 5384
-
Vue 父组件中修改子组件样式阅读 288
-
Ubuntu 修改 apt 镜像阅读 3414
-
Docker 部署 Flink阅读 518
-
Java 并发编程之 ConcurrentSkipListMap阅读 1244
-
Java 中的自旋锁阅读 1515
-
Kubernetes ConfigMap 创建失败 cannot unmarshal number into Go struct field ConfigMap.data of type string阅读 1320
-
使用 Telepresence 在本地环境直接访问 Kubernetes 内部服务地址阅读 729
-
Spring 事务阅读 846
-
Keycloak 一直返回 401 验证不通过阅读 662