snapMode属性用于确定当拖动或滑动时视图停留的位置。

 

它有三个值:

ListView.NoSnap:该属性的默认值,拖动到什么位置就停在什么位置。

ListView.SnapToItem:视图的位置和其中的item顶部对齐。

ListView.SnapOneItem:和上一个属性很像,也是视图和item对齐,只

不过当鼠标释放时,它最多只能移动一个Item的距离。

 

看文字解释还是很抽象,还是看例子比较直观:

例子中ListView使用一个简单的模型20(表示有20个item)。

使用一个矩形作为代理,矩形中间使用一个文本来区分每个item(index表示当前模型中数据项的下标)。

分别测试snapMode的三个值的效果如下:

从效果上来看NoSnap和后面两个的区别比较明显,当鼠标放开时item滚动到什么位置

就是那个位置,所以可以看到上面会存在半个Item的情况,而SnapToItem和SnapOneItem

在鼠标放开时,视图的顶部始终与某一个item顶部对齐。

 

SnapToItem和SnapOneItem的区别是当鼠标松开时,SnapOneItem最多移动的距离是一个item的

高度,比如当鼠标在最上方显示为4的item时松开,最终item4或Item5与视图上方对齐。

而SnapToItem则有多种可能,这取决于滑动的速度,滑动的越快,停留的位置就越靠后面的item。

 

---> 文章来源于我的个人博客:fearlazy
---> 编程是一件怎么也学不会的事情,但是如果能享受学习的过程也是挺好的。