我有一个列表视图。如果我单击一个单元格,该特定单元格需要使用小滚动动画移动到中心。使用我的代码,单击的单元格将在没有任何动画的情况下到达中心。
是否可以为此添加动画?
我的代码如下:
ListView {
id: source_list
width: 1080
height: 480
spacing: 50
model: mediaSongsModel
delegate: mediaSongsDelegate
focus: true
interactive: true
clip: true
highlightMoveDuration: 50
snapMode: ListView.SnapToItem
boundsBehavior:Flickable.StopAtBounds
preferredHighlightBegin: 260/scaleFactor
preferredHighlightEnd: 260/scaleFactor
highlightRangeMode: ListView.StrictlyEnforceRange
}
Component {
id: mediaSongsDelegate
Item {
id: wrapper
width: 1080
height: 200
MouseArea {
anchors.fill: parent
onClicked: {
source_list.currentIndex = index
source_list.positionViewAtIndex(index,ListView.Center)
}
}
}
}
答案 0 :(得分:3)
如果当前项目应始终位于视图的中心或特定区域内,则可以使用preferredHighlightBegin
和preferredHightlightEnd
属性来定义该区域。
highlightRangeMode
的值控制是否以及是否严格适用。例如。如果第一个项目是当前项目且值为StriclyEnforeRange
,则该项目将在指定区域内,即使这意味着比正常项目更进一步滚动"滚动到顶部"会。
这样的事情应该有效
ListView {
preferredHighlightBegin: height / 2 - 100 // 100 being item height / 2
preferredHighlightEnd: height / 2 + 100 // 100 being item height / 2
highlightRangeMode: ListView.StrictlyEnforceRange
}
答案 1 :(得分:1)
我通过删除以下代码行解决了我的问题:
source_list.positionViewAtIndex(index,ListView.Center);
动画正常工作。