Pregunta

Estoy teniendo algunos problemas al intentar cambiar la carcasa de la barra de desplazamiento en un HorizontalList con Degrafa. La barra de desplazamiento no aparece en absoluto. Revisé para ver si la barra de desplazamiento se supone que debe presentarse sin el desollado, y lo hace. ¿Hay trampas con hacer esto? Aquí hay un código:

Aquí es donde defino la HorizontalList donde quiero una barra de desplazamiento de piel

<mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/>

Aquí es donde defino la ClassReference para las pieles (nulo para las flechas de modo ellos no aparecen).

.thumbnailScrollbar
{
    up-arrow-skin:      ClassReference(null);
    down-arrow-skin:    ClassReference(null);
    trackSkin:      ClassReference("ScrollBarTrackSkin");
    thumbSkin:      ClassReference("ScrollBarThumbSkin");
}

ScrollBarTrackSkin:

<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin  xmlns:mx="http://www.adobe.com/2006/mxml" 
                xmlns="http://www.degrafa.com/2007">
    <fills>
        <SolidFill id="upFill" color="#FFFFFF" alpha="0.8"/>
    </fills>

    <geometry>
        <RoundedRectangle id="track" x="-8" cornerRadius="16" width="{this.skinWidth}" height="{this.skinHeight}" fill="{upFill}"/>
    </geometry>

</GraphicBorderSkin>

ScrollBarThumbSkin:

<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin  xmlns:mx="http://www.adobe.com/2006/mxml" 
                       xmlns="http://www.degrafa.com/2007">

    <fills>
        <SolidFill id="background" color="#333333" alpha=".8"/>
    </fills>

    <geometry>
        <RoundedRectangle id="thumb" cornerRadius="16" width="{this.skinWidth}" height="{this.skinHeight}" fill="{background}"/>
    </geometry>
</GraphicBorderSkin>

Estoy instalando los HorizontalList con más elementos que son visibles, y como he dicho antes la barra de desplazamiento aparece cuando quito el desollado.

¿Fue útil?

Solución

Cuando se está estableciendo su skinHeight y skinWidth? Típicamente, Degrafa ejemplos hacen algo como esto en la piel para actualizar la altura / anchura:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                awidth = unscaledWidth;
                aheight = unscaledHeight;

            }

Además de eso, tenía que hacer esto:

override public function get measuredWidth():Number {return 16; }
override public function get measuredHeight():Number {return 10;}

en mis pieles de barra de desplazamiento para obtener la altura y anchura que quería. (Mismo para ambos V & H como lo hacen rotación internamente). Hubo algo de código hacky en la piel de la barra de desplazamiento Flex y mis bares no estaban mostrando tampoco.

Pero no estoy usando actualmente Degrafa de mi piel, por lo que no puede ser otro problema. No tengo ningún ejemplo en frente de mí.

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