flex - scrolling - scroll horizontal div
Flex: evita que la barra de desplazamiento cubra el contenido cuando se muestra automáticamente (5)
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 configurar la política de desplazamiento vertical en "activado", no se cubre ningún contenido.
En caso de que establezca ambas políticas de desplazamiento en ''auto'', también obtengo una barra de desplazamiento horizontal solo para desplazarme hacia el área que está cubierta por la barra de desplazamiento vertical.
¿Existe alguna solución alternativa a la forma en que puedo retransmitir el contenido del lienzo cuando se muestra la barra de desplazamiento vertical para que no cubra ningún contenido?
en vbox u otro componente basado en Container, resolví ese problema de esa manera.
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>
Solo una nota al margen con respecto a este tema: en realidad no es un error, sino un comportamiento conocido (¿y se pretende?):
"Flex considera las barras de desplazamiento en sus cálculos de tamaño solo si establece explícitamente la política de desplazamiento en
ScrollPolicy.ON
. Por lo tanto, si usa una política de desplazamiento automático (la predeterminada), la barra de desplazamiento se solapa con los botones. Para evitar este comportamiento, puede establezca la propiedad deheight
para el contenedor HBox o permita que el contenedor HBox cambie el tamaño estableciendo un ancho basado en porcentaje. Recuerde que cambiar la altura del contenedor HBox hace que otros componentes de su aplicación se muevan y cambien de tamaño según sus propias reglas de tamaño ".
- De Sizing Components en la ayuda de Flex 3, en "Uso de barras de desplazamiento"
Es un error. Consulte el error Flex verticalScrollPolicy para obtener una solución alternativa.
Yo también. Por lo general, tengo algunos problemas con verticalScrollBar en Flex, por lo que prefiero usar la barra de desplazamiento del navegador para desplazar la aplicación completa. Puede encontrar una solución alternativa 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) alguna 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, usa "-" en lugar de "+".
Tuve que encontrar esta solución alternativa Flex ScrollPolicy.AUTO No es lo suficientemente bueno que resolvió este problema, porque la solución de error vertical verticalScrollPolicy no funcionó para mí.