如何制作一个只在android屏幕上浮动的粘性列表项?

Posted

技术标签:

【中文标题】如何制作一个只在android屏幕上浮动的粘性列表项?【英文标题】:How to make a sticky list item which will float only within the screen on android? 【发布时间】:2014-04-25 22:52:06 【问题描述】:

对于粘性页眉和页脚有很多解决方案。但我想要的是制作一个粘性项目,它将首先显示在列表顶部,向下滚动粘性项目时,列表将滚动到屏幕末尾而不是列表末尾。

所以它只会在屏幕内浮动。我试图找到解决方案 2 天,但找不到任何有效的方法。

你可以看看这个例子:https://www.numbrs.com/ 我想要的是将顶部的文本信息作为一个列表项,不会走出屏幕,以便更好地指示过去和未来的项目。

您有什么解决方案或建议吗?

【问题讨论】:

【参考方案1】:

你应该破解这些项目。

https://github.com/bauerca/drag-sort-listview

https://github.com/LarsWerkman/QuickReturnListView

“drag-sort-listview”显示了一种创建浮动列表项视图副本的方法。您必须扩展 ListView 并覆盖 OnDraw(Canvas)dispatchDraw(Canvas) 方法才能绘制浮动视图。 别忘了调用setWillNotDraw(false)invalidate()来成功更新视图。

“QuickReturnListView”显示获取和缓存其他列表项视图的垂直位置。这些位置用作浮动视图将被放置的参考。 translateY() 方法用于移动浮动视图。

注意: 早期版本的“drag-sort-listview”用于通过添加WindowManager 来绘制浮动视图,而不是在最新版本中在ListView 中绘制视图。就我个人而言,我用旧的方式成功了,但没有用最新的版本。我的问题是 OnDraw()dispatchDraw() 方法没有被调用。我找不到为什么会发生这种情况,只是在 SO 和谷歌上找到。如果你知道请告诉我。

更新:我可能误解了你想要什么。我无法测试您的示例,因为我没有任何 ios 设备。如果我理解你,this 一定是正确答案。

【讨论】:

以上是关于如何制作一个只在android屏幕上浮动的粘性列表项?的主要内容,如果未能解决你的问题,请参考以下文章

如何按住浮动按钮并将其移动到 android 屏幕上的任何位置?

如何在 RecyclerView 中制作粘性标题? (没有外部库)

粘性页脚浮动到一页顶部

Android - imageView 可以在屏幕上浮动吗?

iOS 上的浮动媒体控件

Android:将手势事件传递给另一个视图