作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试实现下图所示的布局,使用适配器来组成内部 View :
所有行一起滚动,回收就位。
我没有在 SO 或任何博客上看到很多方法。 FlowLayout 不允许滚动,StaggeredGridView(Etsy 或 Google 的)不允许旋转,同步的多 ListView 似乎太复杂了。
这个自定义组件的 SO 方法是什么?
最佳答案
我的方法是将 n horizontal listviews bundle 在一起在一个 View 组中。监听 View 组上的触摸事件,并一起滚动所有 3 个水平 ListView 。
布局会是这样的——
LinearLayout(vertical)
--HorizontalListView1
--HorizontalListView2
--HorizontalListView3
--HorizontalListView-n
现在将所有触摸事件转发给父 View 组,并在单个 toucheventlistener 中处理它们。在touchevent监听器中,为所有水平的listview计算一个scroll,并调用相应的scroll。
由于所有滚动调用都是在 UI 线程上的单个调用中完成的,因此它们应该在下一个绘图 channel 中处理。这应该让它感觉同步。如果这不起作用,您需要通过扩展它们来显式同步 View 。
有了这个,您将尽可能地使用水平 ListView 进行 View 重用和回收。如果同步到位,所有 View 都应该一起滚动。
关于android - 具有不均匀列大小或 Horizontal StaggeredGridView 的动态适配器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910045/
我是一名优秀的程序员,十分优秀!