这不是设计问题,我已经设计了项目。我对如何实现它感到困惑。
我的任务是为 Android 设计一个 View ,该 View 具有用户帖子及其下方评论的 View 。该帖子包含一些额外的信息和与评论截然不同的设计,但所有这些都需要像网页一样滚动滚动(哦,我被多年的网络开发宠坏了......).
我目前的解决方案是嵌套一个 LinearLayout
(在 View 顶部以包含用户的帖子)和一个 RecyclerView
(在帖子下方以显示评论)在垂直 ScrollView
中。信息确实显示了,但是 RecyclerView
当然会独立于其上方的 LinearLayout
滚动,从而破坏 View 的功能。
如果可能的话,我希望继续使用 RecyclerView
最好的情况是让带有帖子的 LinearLayout 滚动一定量,然后 RecyclerView
接管。 但是,我不想用 200 多行难看的代码毒化我的代码库来实现这一点,所以如果这是一项艰巨的任务,我宁愿寻找替代方案。
最佳答案
首先要了解的是:你真的需要一个RecyclerView
,或者更好的是,你真的需要回收吗?
如果答案是是,则方法是在RecyclerView
的Adapter
中使用两种不同的项目类型(有关详细信息,参见 here 或 here )。这个概念已经出现在 ListView
中:主要区别在于 RecyclerView
强制使用 View Holder 模式。它并没有那么复杂,更重要的是,RecyclerView
应该是用来解决这个问题的。根据您的 UI 设计,您可能还希望针对不同类型的评论(纯文本、图像等)使用不同的 View 类型。请记住,当 RecyclerView
包含在 ScrollView
中时,回收将不起作用,因为其中的所有项目将被一次绘制以计算高度父 ScrollView
的内容。
如果答案是否,那么您可以在运行时创建您的 View 并将它们添加到 ScrollView
中的父 LinearLayout
。它实际上只不过是一个 for 循环。
一种更奇特的方法是为用户的帖子使用 ItemDecoration
,但我看不出在这种情况下有任何具体优势。
关于安卓布局: scrolling list with header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51451409/