可滚动片段中的RecyclerView

时间:2018-03-28 13:42:46

标签: android android-recyclerview

我想实现以下场景:

enter image description here

所以,这是一个有两个部分的屏幕:

  • A部分是标题和水平滚动。
  • B部分是带有字幕的标题,以及一个垂直的,无尽的滚动

现在我希望此屏幕的行为方式如下:

在任何地方垂直滚动会使整个A部分一直向上,直到字幕向上(粘性);发生这种情况时,B部分的滚动也会上升。固定字幕后,如果继续滚动,B将继续显示更多元素。

向另一个方向滚动将首先显示整个A部分,当展开时,将触发两个部分的滑动刷新。

现在我尝试使用NestedScrollView,但这与我的recyclerview混乱,因为RecyclerView无法滚动,因此enterAlways无法实际回收视图(从而累积项目并最终进入OOM )。

我还尝试将A节中的所有内容放到appbar中,然后使用coordinatorlayout来固定字幕并移动所有内容,但无论enterAlwaysCollapsed | scroll | import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQMessage; import com.ibm.mq.MQPutMessageOptions; import com.ibm.mq.MQQueueManager; import com.ibm.mq.MQQueue; import com.ibm.mq.MQC; public class MQResponseWriter { public static void main(String[] args) { try { int openOptions = MQC.MQOO_INQUIRE | MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT; MQEnvironment.hostname = "myserver_name"; MQEnvironment.port = 1417; MQEnvironment.channel = "my_channel_name"; //MQEnvironment.properties.put(CMQC.USER_ID_PROPERTY, "admin"); //MQEnvironment.properties.put(CMQC.PASSWORD_PROPERTY, "passw0rd"); //MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); MQQueueManager queueManager; queueManager = new MQQueueManager("queue_manger_name"); MQQueue destQueue = queueManager.accessQueue("queue_name", openOptions); MQMessage hello_world = new MQMessage(); hello_world.writeUTF("Blah...blah...bleah...test message no.1...!"); MQPutMessageOptions pmo = new MQPutMessageOptions(); destQueue.put(hello_world, pmo); destQueue.close(); queueManager.disconnect(); System.out.println("------------------------success..."); } catch (Exception e) { System.out.println("Exception: " + e); e.printStackTrace(); } } } |等的哪种组合我使用,行为永远不是预期的:大多数时候,即使A部分不完全可见,也会在下拉时触发滑动。

这个屏幕可能看起来像是一个琐碎的任务,但在Android中结合滚动被证明是一场噩梦。

2 个答案:

答案 0 :(得分:1)

你需要2个Recycleview,一个用于水平标题,第二个用于垂直标题。请检查link。它可能对你有所帮助。

答案 1 :(得分:1)

我写了一份提要刷新行为套件nestrefresh。您可以在标题中添加可滚动子元素,也可以将粘性标题添加为TabLayout。拉动所有子项可以刷新并具有“拉动刷新”效果。