Looking for xamarin.forms Keywords? Try Ask4Keywords

Xamarin.FormsDisposición relativa de Xamarin


Observaciones

El uso de ForceLayout en este caso.

Las etiquetas y el tamaño de los botones cambian de acuerdo con el texto dentro de ellos. Por lo tanto, cuando los niños se agregan al diseño, su tamaño permanece en 0 tanto en ancho como en alto. Por ejemplo:

relativeLayout.Children.Add(label,
    Constraint.RelativeToParent(parent => label.Width));

La expresión anterior devolverá 0 porque el ancho es 0 en este momento. Para solucionar esto, necesitamos escuchar el evento SizeChanged y cuando el tamaño cambie, debemos forzar el diseño para volver a dibujarlo.

label.SizeChanged += (s, e) => relativeLayout.ForceLayout();

Para una vista como BoxView esto es innecesario. Porque podemos definir sus tamaños en la instanciación. Lo otro es que, en ambos casos, podemos definir su ancho y alto como una restricción cuando los estamos agregando al diseño. Por ejemplo:

relativeLayout.Children.Add(label,
    Constraint.Constant(0),
    Constraint.Constant(0),
    //Width constraint
    Constraint.Constant(30),
    //Height constraint
    Constraint.Constant(40));

Esto agregará la etiqueta al punto 0, 0. El ancho y el alto de la etiqueta serán 30 y 40. Sin embargo, si el texto es demasiado largo, es posible que parte de la misma no se muestre. Si su etiqueta tiene o podría tener una altura alta, puede usar la propiedad LineBreakMode de la etiqueta. Que puede envolver el texto. Hay muchas opciones en LineBreakMode enum .

Disposición relativa de Xamarin Ejemplos relacionados