2016-11-26 89 views
1

我有一個列表視圖。如果我點擊一個單元格,該特定的單元格需要移動到一個小的滾動動畫中心。用我的代碼,被點擊的單元格將在沒有任何動畫的情況下到達中心。如何將列表視圖滾動到當前項目?

有沒有可能爲此添加動畫?

我把我下面的代碼:

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)  
       } 
      }   
     } 
    } 
+1

您提供的代碼不起作用。您的物品委託不可見。什麼是'scaleFactor'?如果您想獲得答案,請使用* working *示例更新代碼。 – folibis

回答

1

如果當前項應始終處於中心或在一個特定的人的觀點,那麼你可以使用preferredHighlightBeginpreferredHightlightEnd屬性來定義該區域。

highlightRangeMode的值控制是否如果是,這適用的嚴格程度。例如。如果第一個項目是當前項目,並且值爲StriclyEnforeRange,則該項目將位於指定區域內,即使這意味着進一步滾動比正常的「滾動到頂部」更多。

類似的東西應該工作

ListView { 
    preferredHighlightBegin: height/2 - 100 // 100 being item height/2 
    preferredHighlightEnd: height/2 + 100 // 100 being item height/2 
    highlightRangeMode: ListView.StrictlyEnforceRange 
} 
+0

但這對我有用。但是沒有向上/向下滾動動畫。 –

+0

奇怪的是,當我這樣做時,新的當前項目移動到首選範圍,並且列表相應地移動。 –

+0

其實問題出在source_list.positionViewAtIndex(index,ListView.Center);當我刪除它的工作。感謝您的支持。 –

1

我已經解決了我的問題,通過刪除下面的代碼行:

source_list.positionViewAtIndex(index,ListView.Center); 

動畫工作正常。

相關問題