que propiedades propiedad grow espacio entre ejemplo contenedor flex forms layout user-interface

propiedades - flex-grow que es



Flex-tendiendo elementos de forma tanto vertical como horizontalmente (3)

Estoy tratando de crear una forma simple en flex (flash builder 4). Coloqué un contenedor de formulario y FormItems dentro. Los elementos de formulario son, por ejemplo, campos estándar de "cliente" como Primero, Último, Dirección, Ciudad, Estado, Código postal.

De forma predeterminada, establece los campos verticalmente y hace que las etiquetas de campo estén justificadas a la derecha, lo que se ve bien.

Sin embargo, me gustaría que algunos de los campos sean horizontales, por ejemplo, algo como esto:

First __________ Last ___________ Address _____________________ City ___________ St ___ Zip ____

Intenté poner el primero / último en un contenedor HGroup, pero eso no funciona, pierdo la justificación correcta de las etiquetas, se ve así:

First __________ Last ___________ Address _____________________ City ___________ St ___ Zip ____

Este es un ejemplo de cómo estoy tratando de hacer el primero / último horizonte, pero no se justificará con la referencia, sin embargo, la ciudad y la referencia se justifican juntas:

<mx:Form x="0" y="307" width="100%"> <s:HGroup> <mx:FormItem label="First"> <s:TextInput/></mx:FormItem> <mx:FormItem label="Last"><s:TextInput/></mx:FormItem> </s:HGroup> <mx:FormItem label="Referral"><s:TextInput/></mx:FormItem><mx:FormItem label="City"> <s:TextInput/> </mx:FormItem> </mx:Form>

Es casi como si necesitara un tipo de diseño de tabla con la habilidad colSpan, o?

Este componente personalizado parecía prometedor, pero no parece funcionar en fb4 al menos http://cookbooks.adobe.com/post_Multi_Column_Form_Layout-9644.html

Además, ¿hay buenos libros / sitios / etc. que discutan el diseño de la interfaz de usuario / diseño de formularios y similares en Flex que puedo explorar?


Debe evitar utilizar múltiples HGroups si desea que las columnas estén alineadas; puede romperse fácilmente al reducir la ventana del navegador para que no pueda mostrar todo el contenido a la vez. La lógica de desbordamiento de contenido romperá la alineación más probable. Use mx: Grid en su lugar como una solución definitiva o s: Formulario para casos muy simples.


La única manera que encontré para lograr eso es usando un mx:Grid . Principalmente porque mx:GridItem s tiene un atributo colSpan o rowSpan . Además, uso empty mx:FormItem s en lugar de Labels, porque puede usar el atributo required para mostrar a (*) para los campos obligatorios.

Aquí hay un ejemplo:

<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> <mx:Form width="100%" height="100%"> <mx:Grid width="100%" height="100%"> <mx:GridRow> <mx:GridItem> <mx:FormItem label="First" required="true"/> </mx:GridItem> <mx:GridItem> <s:TextInput/> </mx:GridItem> <mx:GridItem> <mx:FormItem label="Last"/> </mx:GridItem> <mx:GridItem> <s:TextInput/> </mx:GridItem> </mx:GridRow> <mx:GridRow> <mx:GridItem width="100%" height="100%"> <mx:FormItem label="Last"/> </mx:GridItem> <mx:GridItem width="100%" height="100%" colSpan="3"> <s:TextInput width="100%"/> </mx:GridItem> </mx:GridRow> </mx:Grid> </mx:Form> </s:Group>

Espero que esto ayude,

Koen


La respuesta es simplemente usar CSS. Cree un estilo de etiqueta en CSS que especifique textAlign en ''left''. A continuación, tome ese estilo de etiqueta y aplíquelo a la propiedad labelStyleName en FormItem .

Aquí hay una aplicación completa que demuestra la solución:

<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <fx:Style> @namespace s "library://ns.adobe.com/flex/spark"; @namespace mx "library://ns.adobe.com/flex/mx"; .labelStyleName { textAlign:left; } </fx:Style> <mx:Form x="0" y="307" width="100%"> <s:HGroup> <mx:FormItem label="First" horizontalAlign="left" labelStyleName="labelStyleName"> <s:TextInput/> </mx:FormItem> <mx:FormItem label="Last" horizontalAlign="left" labelStyleName="labelStyleName"> <s:TextInput/> </mx:FormItem> </s:HGroup> <mx:FormItem label="Referral" horizontalAlign="left" labelStyleName="labelStyleName"> <s:TextInput/> </mx:FormItem> <mx:FormItem label="City" horizontalAlign="left" labelStyleName="labelStyleName"> <s:TextInput/> </mx:FormItem> </mx:Form> </s:Application>

Si desea alineación más específica de los elementos de entrada; es posible que deba especificar un valor de labelWidth.