Flex: cambie la posición de la barra de desplazamiento a la parte superior de un componente HorizontalList

StackOverflow https://stackoverflow.com/questions/615074

Pregunta

Por defecto, la barra de desplazamiento horizontal de un componente HorizontalList estará en la parte inferior. ¿Hay alguna forma de reposicionarlo para que esté en la parte superior?

Solo por claridad, no me refiero a mover la posición de desplazamiento usando scrollToIndex u horizontalScrollPosition o similar, sino la posición física real del componente de la barra de desplazamiento.

¡Cualquier sugerencia sería muy apreciada!

¿Fue útil?

Solución

Hace un tiempo estuve buscando algo similar y encontré esta publicación . Eventualmente terminé resolviendo mi problema de otra manera, así que no usé esa solución, sin embargo, podría funcionar para lo que quieres.

Otros consejos

He tenido que hacer lo mismo anteriormente. Tuve que buscar en las clases base (para manejar algunos problemas de enmascaramiento / posicionamiento) y esto es lo que se me ocurrió:

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);
        }

    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top