Android学习之ScrollView中的坑

本文解决了ScrollView内容显示不全的问题。通过调整AppBarLayout配置,使用app:layout_scrollFlags=scroll|enterAlways属性,使AppBarLayout可折叠,从而确保ScrollView内容完全可见。
摘要由CSDN通过智能技术生成

最近在做一个小程序,用到ScrollView的时候坑了我半天的时间。


问题描述:ScrollView中的内容不能完全显示


首先是一个跟这个问题无关的问题,布局中的fitsSystemWindows设为true为导致内容飘到状态栏后面去。


回到主题。新手,刚开始遇到这个问题,无从下手,只能靠搜索引擎。

先是有说是因为外层控件设置了margin,导致View下移。尝试把所有margin删掉,无效。

看到有提到ScrollView和ListView嵌套会出问题,于是调转方向,往这个方向走。五花八门的答案看的我一愣一愣,有写的很完整的,有从别人那儿照葫芦画瓢搬来结果还理解错了的,也是醉了。在将几乎所有可能的方法都试过无效后,我决定还是自己想想办法。

与此同时有一个很奇怪的事情就是程序刚加载的时候是显示不全的,但是当打开侧边菜单再返回后,显示就正常了。于是根据这个现象,猜测这个过程中某个View的高度发生了变化。顺着这个思路,插入测试代码,试了几次后,发现ScrollView的高度的确发生了变化,但是外层的CoordinatorLayout高度却没有变。与ScrollView并列的是一个AppBarLayout,再次测试,AppBarLayout的高度也没有变,奇了怪了。搜了一搜AppBarLayout + ScrollView,找到一篇文章提到CollapsingToolbarLayout,于是对AppBarLayout进行改造测试,虽然没有解决问题,但是又提供了一些思路。然后又找到一个问题,Toolbar will not collapse with Scrollview as child of CoordinatorLayout,根据答案将ScrollView改为NestedScrollView,无效。但这两个信息合起来后给了我启发,collapse?再去查AppBarLayout,来到了这里《玩转AppBarLayout,更酷炫的顶部栏》,在Toolbar中添加app:layout_scrollFlags="scroll|enterAlways",运行,滑动,AppBarLayout收起,ScrollView显示正常,问题解决。


推测是初始加载计算ScrollView的高度的时候没有减去AppBarLayout的高度,导致ScrollView的高度过大,超出了屏幕范围,内容其实是被“显示”出来了,只不过看不到。以后有时间再深入研究一下这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值