Flex: evita que la barra de desplazamiento cubra el contenido cuando se muestra automáticamente

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

  •  08-07-2019
  •  | 
  •  

Pregunta

Tengo un lienzo en Flex que solo podrá desplazarse en dirección vertical, por lo que establezco los atributos del lienzo de la siguiente manera:

verticalScrollPolicy="auto" horizontalScrollPolicy="off"

El problema aquí es que la barra de desplazamiento vertical cubre el contenido cuando aparece, aunque queda suficiente espacio horizontal. Hubiera esperado que el tamaño del contenido se hubiera ajustado automáticamente.

Al establecer la política de desplazamiento vertical en " en " ;, tampoco se cubre el contenido.

En caso de que establezca ambas políticas de desplazamiento en 'automático', también obtengo una barra de desplazamiento horizontal solo para desplazarme al área que está cubierta por la barra de desplazamiento vertical.

¿Existe una solución alternativa para retransmitir el contenido del lienzo cuando se muestra la barra de desplazamiento vertical para que no cubra ningún contenido?

¿Fue útil?

Solución

Es un error. Consulte Error de vertical verticalScrollPolicy para obtener una solución.

Otros consejos

Solo una nota al margen sobre este problema: en realidad no es un error, sino un comportamiento conocido (¿y previsto?):

  

" Flex considera las barras de desplazamiento en sus cálculos de dimensionamiento solo si   establecer explícitamente la política de desplazamiento en    ScrollPolicy.ON . Entonces, si usas un   política de desplazamiento automático (el valor predeterminado), el   la barra de desplazamiento se superpone a los botones. A   prevenir este comportamiento, puede configurar el   Propiedad height para el contenedor HBox   o permitir que el contenedor HBox cambie de tamaño   estableciendo un ancho basado en porcentajes.   Recuerda que cambiando la altura de   el contenedor HBox causa otro   componentes en su aplicación para mover   y cambiar el tamaño de acuerdo a sus propios   reglas de dimensionamiento. "

- De Componentes de dimensionamiento en la ayuda de Flex 3, en " Uso de barras de desplazamiento "

Tenía que encontrar esta solución alternativa Flex ScrollPolicy.AUTO no Lo suficientemente bueno que resolvió este problema, porque el error Flex verticalScrollPolicy no funcionó para mí.

en vbox u otro componente basado en Contenedor, resolví ese problema así.

Incorrecto:

<mx:VBox width="100%" height="100%"
      verticalScrollPolicy="auto" horizontalScrollPolicy="off">
     <mx:Repeater dataProvider="{hede}">
          <custom:RenderItem ........../>
     </mx:Repeater>
</mx:VBox>

no hay barra de desplazamiento

Versión de trabajo:

<mx:VBox width="100%" height="100%"
    **minHeight="1"** horizontalScrollPolicy="off">
    <mx:Repeater dataProvider="{hede}">
        <custom:RenderItem ........../>
    </mx:Repeater>
</mx:VBox>

Yo también. Por lo general, tengo algunos problemas con la barra vertical de desplazamiento en Flex, por lo que prefiero usar la barra de desplazamiento del navegador para desplazar la aplicación completa. Puede encontrar una solución aquí: Cómo cambiar el tamaño de Flex Stage y usar la barra de desplazamiento del navegador .

El código que uso:

En Flex:

ExternalInterface.call("setInitialFlashHeight", this.height);

En mi HTML (JavaScript):

function setInitialFlashHeight(newHeight) {
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

Y si desea agregar (o eliminar) algo de altura:

function addFlashHeight(height) {
    var divHeight;
    var obj = document.getElementById('my_flash');

    if (obj.offsetHeight) {
        divHeight = obj.offsetHeight;
    } else if (obj.style.pixelHeight){
        divHeight = obj.style.pixelHeight;
    }

    var newHeight = divHeight + height;
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

Para eliminar, utiliza " - " en lugar de " + " ;.

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