Android嵌套滑动控件的冲突解决和ViewPager适配当前子控件高度不留空白的办法

Posted HyperionChen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android嵌套滑动控件的冲突解决和ViewPager适配当前子控件高度不留空白的办法相关的知识,希望对你有一定的参考价值。

最近项目有一个需求,需要多层可滑动控件的嵌套展示,demo效果如下,demo的下载地址在最后



咋一看好像挺简单啊,不就是一个ScrollView + ViewPager + ListView吗,我开始也这样觉得,也用的这种方式实现,结果始终和效果不对劲。这里总结几点问题:

  • 两个或两个以上的滑动控件嵌套时,如果layout_height采用的是wrap_content会造成内部滑动控件的高度不能正确的计算,会导致内部滑动控件的高度始终为0,除非你用定值设置,比如300dp。
  • 两个相同滑动方向的滑动控件嵌套,会使其中一个控件的滑动事件失效。
  • 如果采用ScrollView作为最外层的滑动控件,则会产生莫名其妙的移位BUG,通过日志发现是scrollY的异常变化,但是通过scrollTo方法是无效的。
  • ViewPager嵌套ListView的时候,默认ViewPager的高度是所有ListView中最高的那个,因此会造成其他ListView底部会有一大片的补白。