2009-03-05 9 views
3

Par défaut, le Horizontal ScrollBar d'un composant HorizontalList sera en bas. Y a-t-il un moyen de le repositionner pour qu'il soit au sommet? Pour plus de clarté, je ne veux pas dire déplacer la position de défilement en utilisant scrollToIndex ou horizontalScrollPosition ou similaire, mais la position physique réelle du composant de la barre de défilement.Flex - Modifier la position de la barre de défilement en haut d'un composant HorizontalList

Toutes les suggestions seraient très appréciées!

Répondre

3

Je cherchais quelque chose de similaire il y a un certain temps et j'ai trouvé this post. J'ai finalement fini par résoudre mon problème d'une autre manière, donc je n'ai pas utilisé cette solution, mais cela pourrait fonctionner pour ce que vous voulez.

1

J'ai dû faire la même chose précédemment. J'ai dû creuser dans les classes de base (pour gérer quelques problèmes de masquage/positionnement) et voici ce que j'ai trouvé:

package 
{ 
    import flash.display.DisplayObject; 

    import mx.controls.HorizontalList; 
    import mx.core.EdgeMetrics; 

    public class ReverseHList extends HorizontalList 
    { 
     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
     { 
      super.updateDisplayList(unscaledWidth, unscaledHeight); 

      var w:Number = unscaledWidth; 
      var h:Number = unscaledHeight; 
      var vm:EdgeMetrics = viewMetrics; 
      if (horizontalScrollBar && horizontalScrollBar.visible) 
      { 
       horizontalScrollBar.setActualSize(w - vm.left - vm.right, 
                horizontalScrollBar.minHeight); 
       horizontalScrollBar.move(vm.left, vm.top); 

       horizontalScrollBar.enabled = enabled; 
      } 

      var mask:DisplayObject = maskShape; 

      var wd:Number = w - vm.left - vm.right; 
      var ht:Number = h - vm.top - vm.bottom; 

      mask.width = wd < 0 ? 0 : wd; 
      mask.height = ht < 0 ? 0 : ht; 

      mask.x = vm.left; 
      mask.y = vm.top + vm.bottom; 
     } 

     override protected function adjustListContent(unscaledWidth:Number = -1, 
             unscaledHeight:Number = -1):void 
     { 
      super.adjustListContent(unscaledWidth, unscaledHeight); 

      var lcx:Number = viewMetrics.left + listContent.leftOffset; 
      var lcy:Number = (viewMetrics.top + listContent.topOffset) + viewMetrics.bottom; 
      listContent.move(lcx, lcy); 
     } 

    } 
} 
Questions connexes