我在s中設置了選定元素:列表組件使用Actionscript,它工作,但List不滾動到選定項目 - 需要使用滾動條或鼠標滾動。是否可以自動滾動到選定的項目?謝謝 !滾動到Flex 4 Spark List組件中的選定項目
回答
嘗試s:List
方法ensureIndexIsVisible(index:int):void。
在柔性-3有一個scrollToIndex
方法,因此你可以調用
list.scrollToIndex(list.selectedIndex);
我相信這應該彎曲-4工作了。
不幸的是,沒有。 Spark List中沒有這種方法,但它是Halo List組件的一部分。 Flex 4正在不斷髮展並仍處於Beta階段,希望這個問題能夠得到解決。 –
您可能需要直接訪問列表的滾動條,並做一些事情,如:
list.scroller.scrollRect.y = list.itemRenderer.height * index;
我發現你不能直接更改scrollRect中的值,而是需要使用新的矩形更新scrollRect?像[this](http://www.actionscript.org/forums/showthread.php3?t=190795) – eldamar
您可以通過它的索引乘以元素的高度,這個值傳遞給:
yourListID.scroller.viewport.verticalScrollPosition
我最近有我的組中的項目定義的大小來實現這在我的項目之一..
<s:Scroller x="940" y="0" maxHeight="465" maxWidth="940" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<s:HGroup id="tutPane" columnWidth="940" variableColumnWidth="false" gap="0" x="0" y="0">
</s:HGroup>
</s:Scroller>
以下的操作通過增加私人「targetindex」這個工作我的按鈕控制變量,然後我叫checkAnimation功能,它使用了動畫類,與SimpleMotionPath和tutpane.firstIndexInView之間的對比組合TARG et指數。這修改了該組的「horizontalScrollPosition」。
這使得獨立控制基本上充當一個滾動條,但我有滑動控制的要求,查看所選擇的項目。我相信這種技術可以爲項目的自動選擇,以及
工作星火:
list.ensureIndexIsVisible(index);
我在這裏看到這個基本的想法... http://arthurnn.com/blog/2011/01/12/coverflow-layout-for-flex-4/
public function scrollGroup(n : int) : void
{
var scrollPoint : Point = theList.layout.getScrollPositionDeltaToElement(n);
var duration : Number = (Math.max(scrollPoint.x, theList.layout.target.horizontalScrollPosition) - Math.min(scrollPoint.x, theList.layout.target.horizontalScrollPosition)) * .01;
Tweener.addTween(theList.layout,{ horizontalScrollPosition: scrollPoint.x , time:duration});
}
protected function theList_caretChangeHandler(event:IndexChangeEvent):void
{
scrollGroup(event.newIndex);
event.target.invalidateDisplayList();
}
此功能將滾動到Flex 4+中列表的頂部。它考慮了物品的高度,因此它適用於具有不同高度的不同物品的列表。
private function scrollToIndex(list:List,index:int):void
{
if (!list.layout)
return;
var dataGroup:DataGroup = list.dataGroup;
var spDelta:Point = dataGroup.layout.getScrollPositionDeltaToElement(index);
if (spDelta)
{
dataGroup.horizontalScrollPosition += spDelta.x;
//move it to the top if the list has enough items
if(spDelta.y > 0)
{
var maxVSP:Number = dataGroup.contentHeight - dataGroup.height;
var itemBounds:Rectangle = list.layout.getElementBounds(index);
var newHeight:Number = dataGroup.verticalScrollPosition + spDelta.y
+ dataGroup.height - itemBounds.height;
dataGroup.verticalScrollPosition = Math.min(maxVSP, newHeight);
}
else
{
dataGroup.verticalScrollPosition += spDelta.y;
}
}
}
//try this
this.callLater(updateIndex);//where you want to set the selectedIndex
private function updateIndex():void
{
list.selectedIndex = newIndex;
list.ensureIndexIsVisible(newIndex);
}
較短的版本:'callLater(list.ensureIndexIsVisible,[list.selectedIndex])'但仍然不是最好的解決方案 - 有時拋出索引超出範圍錯誤 –
這爲我工作。不得不使用callLater。
list.selectedItem = "MyTestItem"; //or list.selectedIndex = 10;
this.callLater(updateIndex); //dispatch an update to list
private function updateIndex():void {
list.ensureIndexIsVisible(list.selectedIndex);
}
這是一個錯誤 - 你可以看到演示和解決方法在https://issues.apache.org/jira/browse/FLEX-33660
這個自定義列表組件擴展爲我工作:
<s:List
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
valueCommit="callLater(ensureIndexIsVisible, [selectedIndex])">
</s:List>
- 1. Flex 4顯示Spark中的選定項目DropDownList
- 2. Flex Spark List不更新,丟失項目
- 3. Flex Spark列表組件項目順序
- 4. 當添加新數據時,Flex Spark List滾動到底部
- 5. 滾動到ListPreference中的選定項目
- 6. Flex 4 DropDownList所選項目
- 7. 如何禁用Flex 4 Spark List的自動調整大小?
- 8. 刷新每個項目的itemRenderer List組件的Flex
- 9. 的Flex 4應用滾動
- 10. ListView滾動到選定的項目
- 11. Java JList滾動到選定的項目
- 12. Flex 4爲Spark組件嵌入字體
- 13. 是否可以使Flex List控件中的項目不可選?
- 14. 訪問組組件中的滾動條Flex 4
- 15. Flex Spark Datagrid固定列,水平滾動
- 16. 如何處理Flex 4中的Spark List控件中的單擊事件?
- 17. Flex移動項目選項
- 18. flex 3組合框選定項目
- 19. Flex 4:組件移動事件
- 20. Flex Spark DropDownList - 在項目
- 21. 在Flex中動態加載組件4
- 22. Flex 4 Scroller組件不渲染水平滾動條
- 23. 如何滾動到選擇框中的選定項目
- 24. Flex 4從火花中刪除選定的項目DropDownList
- 25. 滾動到特定項目
- 26. Flex 4 spark數據網格選擇行更改與選項卡
- 27. 將現有的Flex 4.x項目遷移到Apache Flex 4.x
- 28. Flex 4 - 將組件添加到Spark Panel或Spark TitleWindow的標題欄
- 29. Flex 4 List with InteractionMode Touch:如何強制滾動條可見
- 30. Flash Lite 4和Flex/Spark
謝謝,但它似乎只適用於最新的Flex 4 SDK版本(Flex Builder 4 Beta 2)。我意識到我使用了一種沒有這種方法的舊版本。 –
這也只能滾動,使項目的頂部是可見的,如果項目很高,這不會滾動到底部 – JTtheGeek
@JTtheGeek是的,在Spark List 4.6中,似乎您必須單擊兩次以滾動到底部。 – Nemi