AbsoluteLayout Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Positions child elements at absolute positions.
public class AbsoluteLayout : Xamarin.Forms.Layout<Xamarin.Forms.View>, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.AbsoluteLayout>
type AbsoluteLayout = class
inherit Layout<View>
interface IElementConfiguration<AbsoluteLayout>
- Inheritance
-
System.ObjectAbsoluteLayout
- Implements
Remarks
Application developers can control the placement of child elements by providing proportional coordinates, device coordinates, or a combination of both, depending on the AbsoluteLayoutFlags values that are passed to SetLayoutFlags(BindableObject, AbsoluteLayoutFlags) method. When one of the proportional AbsoluteLayoutFlags enumeration values is provided, the corresponding X, or Y arguments that range between 0.0 and 1.0 will always cause the child to be displayed completely on screen. That is, you do not need to subtract or add the height or width of a child in order to display it flush with the left, right, top, or bottom of the AbsoluteLayout. For width, height, X, or Y values that are not specified proportionally, application developers use device-dependent units to locate and size the child element.
The following example shows how to use an AbsoluteLayout with proportional position arguments.
Label header = new Label
{
Text = "AbsoluteLayout Demo",
FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)),
HorizontalOptions = LayoutOptions.Center
};
AbsoluteLayout simpleLayout = new AbsoluteLayout
{
BackgroundColor = Color.Blue.WithLuminosity(0.9),
VerticalOptions = LayoutOptions.FillAndExpand
};
topLeftLabel = new Label
{
Text = "Top Left",
TextColor = Color.Black
};
centerLabel = new Label
{
Text = "Centered",
TextColor = Color.Black
};
bottomRightLabel = new Label
{
Text = "Bottom Right",
TextColor = Color.Black
};
// PositionProportional flag maps the range (0.0, 1.0) to
// the range "flush [left|top]" to "flush [right|bottom]"
AbsoluteLayout.SetLayoutFlags(bottomRightLabel,
AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds(topLeftLabel,
new Rectangle(0f,
0f, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
AbsoluteLayout.SetLayoutFlags(centerLabel,
AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds(centerLabel,
new Rectangle(0.5,
0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
AbsoluteLayout.SetLayoutFlags(bottomRightLabel,
AbsoluteLayoutFlags.PositionProportional);
AbsoluteLayout.SetLayoutBounds(bottomRightLabel,
new Rectangle(1f,
1f, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize));
simpleLayout.Children.Add(topLeftLabel);
simpleLayout.Children.Add(centerLabel);
simpleLayout.Children.Add(bottomRightLabel);
The code sample below shows how to place two labels by specifying device-dependent units.
AbsoluteLayout simpleLayout = new AbsoluteLayout
{
BackgroundColor = Color.Blue.WithLuminosity(0.9),
VerticalOptions = LayoutOptions.FillAndExpand
};
Label header = new Label
{
Text = "Device Units Demo",
TextColor = Color.Black,
FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
};
topLeftText = new Label
{
Text = "Left",
TextColor = Color.Black
};
AbsoluteLayout.SetLayoutFlags(topLeftText,
AbsoluteLayoutFlags.None);
AbsoluteLayout.SetLayoutBounds(topLeftText,
new Rectangle(0f, 0f, 100f, 50f));
middleText = new Label
{
Text = "Device-dependent location",
TextColor = Color.Black
};
AbsoluteLayout.SetLayoutFlags(middleText,
AbsoluteLayoutFlags.None);
AbsoluteLayout.SetLayoutBounds(middleText,
new Rectangle(100f, 200f, 200f, 50f));
simpleLayout.Children.Add(topLeftText);
simpleLayout.Children.Add(middleText);
}
The following image shows the AbsoluteLayout demo from the FormsGallery sample.
XAML for Xamarin.Forms supports the following attached properties for the AbsoluteLayout class:
Attached Property | Value |
---|---|
AbsoluteLayout.LayoutBounds | A comma-separated list—possibly with spaces—of four values that specify the bounding rectangle's position and dimensions. The first two values in the list must represent numbers. The latter two values may each either be numbers, or the string "AutoSize". The |
AbsoluteLayout.LayoutFlags | AbsoluteLayoutFlags enumeration value names: |
Application developers can use XAML to lay out elements with the AbsoluteLayout class. The example below places a blue BoxView inside an AbsoluteLayout:
<AbsoluteLayout VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<BoxView AbsoluteLayout.LayoutBounds="0.25, 0.25, 0.5, 0.5"
Color="Blue"
AbsoluteLayout.LayoutFlags="All" />
</AbsoluteLayout>
The AbsoluteLayout class can lay its child elements out in proportional units, device units, or a combination of both. Application developers should remember the following points when specifying a Rectangle structure that will define the layout bounds of a child element:
- For elements whose height and width fit on the screen, proportional position dimensions in the range [0,1] represent elements that are completely on the screen, regardless of whether the height, width, or both are specified in device or proportional units.:
- The above point means that, to specify an element in the lower right hand corner of the screen and that is half as wide and half as all as the screen, with a AbsoluteLayoutFlags value of
All
, the application developer would specify "1.0, 1.0, 0.5, 0.5".: - The app developer can inadvertently cause child elements for which one or both size dimensions were specified proportionally to be displayed partially off the screen, or hidden altogether, by specifying device-unit positions that do not leave enough room for the calculated size of the child.:
- Each part of the bounding Rectangle structure is interpreted according to the AbsoluteLayoutFlags value that controls it. A given rectangle might, for example, have an X-coordinate that is in device units, a Y-coordinate that is in proportional units, a height that is in proportional units, and a width that is in device units, or any other combination of device and proportional units. :
- Rectangles that, when interpreted by using the current AbsoluteLayoutFlags set on the child, represent bounding boxes that are partially or wholly off-screen—for example, by having a width that is larger than the screen width—may give unexpected results.:
Constructors
AbsoluteLayout() |
Initializes a new instance of the AbsoluteLayout class. |
Fields
LayoutBoundsProperty |
Implements the attached property that represents the layout bounds of child elements. Bindable at run time with the string "LayoutBounds". See Remarks. |
LayoutFlagsProperty |
Implements the attached property that contains the AbsoluteLayoutFlags values for child elements. |
Properties
AnchorX |
Gets or sets the X component of the center point for any transform, relative to the bounds of the element. This is a bindable property. (Inherited from VisualElement) |
AnchorY |
Gets or sets the Y component of the center point for any transform, relative to the bounds of the element. This is a bindable property. (Inherited from VisualElement) |
AutomationId |
Gets or sets a value that allows the automation framework to find and interact with this element. (Inherited from Element) |
AutoSize |
A value that indicates that the width or height of the child should be sized to that child's native size. |
Background | (Inherited from VisualElement) |
BackgroundColor |
Gets or sets the color which will fill the background of a VisualElement. This is a bindable property. (Inherited from VisualElement) |
Batched |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
Behaviors |
Gets the list of Behaviors associated to this element. This is a bindable property. (Inherited from VisualElement) |
BindingContext |
Gets or sets object that contains the properties that will be targeted by the bound properties that belong to this BindableObject. (Inherited from BindableObject) |
Bounds |
Gets the bounds of the element. (Inherited from VisualElement) |
CascadeInputTransparent |
Gets or sets a value that controls whether child elements inherit the input transparency of |
Children |
Gets the collection of child elements of the AbsoluteLayout. |
class | (Inherited from NavigableElement) |
ClassId |
Gets or sets a value used to identify a collection of semantically similar elements. (Inherited from Element) |
Clip | (Inherited from VisualElement) |
DisableLayout |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
Dispatcher | (Inherited from BindableObject) |
EffectControlProvider |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
Effects |
A list of the effects that are applied to this item. (Inherited from Element) |
FlowDirection |
Gets or sets the layout flow direction. (Inherited from VisualElement) |
GestureController |
Gets the gesture controller for the view. (Inherited from View) |
GestureRecognizers |
The collection of gesture recognizers associated with this view. (Inherited from View) |
Height |
Gets the current rendered height of this element. This is a read-only bindable property. (Inherited from VisualElement) |
HeightRequest |
Gets or sets the desired height override of this element. (Inherited from VisualElement) |
HorizontalOptions |
Gets or sets the LayoutOptions that define how the element gets laid in a layout cycle. This is a bindable property. (Inherited from View) |
Id |
Gets a value that can be used to uniquely identify an element through the run of an application. (Inherited from Element) |
InputTransparent |
Gets or sets a value indicating whether this element should be involved in the user interaction cycle. This is a bindable property. (Inherited from VisualElement) |
IsClippedToBounds |
Gets or sets a value which determines if the Layout should clip its children to its bounds. (Inherited from Layout) |
IsEnabled |
Gets or sets a value indicating whether this element is enabled in the user interface. This is a bindable property. (Inherited from VisualElement) |
IsFocused |
Gets a value indicating whether this element is focused currently. This is a bindable property. (Inherited from VisualElement) |
IsInNativeLayout |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
IsNativeStateConsistent |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
IsPlatformEnabled |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
IsTabStop |
Gets or sets a value that indicates whether this element is included in tab navigation. This is a bindable property. (Inherited from VisualElement) |
IsVisible |
Gets or sets a value that determines whether this elements should be part of the visual tree or not. This is a bindable property. (Inherited from VisualElement) |
LogicalChildren |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
Margin |
Gets or sets the margin for the view. (Inherited from View) |
MinimumHeightRequest |
Gets or sets a value which overrides the minimum height the element will request during layout. (Inherited from VisualElement) |
MinimumWidthRequest |
Gets or sets a value which overrides the minimum width the element will request during layout. (Inherited from VisualElement) |
Navigation | (Inherited from NavigableElement) |
NavigationProxy | (Inherited from NavigableElement) |
Opacity |
Gets or sets the opacity value applied to the element when it is rendered. This is a bindable property. (Inherited from VisualElement) |
Padding |
Gets or sets the inner padding of the Layout. (Inherited from Layout) |
Parent |
Gets or sets the parent element of the element. (Inherited from Element) |
ParentView |
Obsolete.
Gets the element which is the closest ancestor of this element that is a VisualElement. (Inherited from Element) |
Platform |
Obsolete.
(Inherited from Element)
|
RealParent |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
Resources |
Gets or sets the local resource dictionary. (Inherited from VisualElement) |
Rotation |
Gets or sets the rotation (in degrees) about the Z-axis (affine rotation) when the element is rendered. (Inherited from VisualElement) |
RotationX |
Gets or sets the rotation (in degrees) about the X-axis (perspective rotation) when the element is rendered. (Inherited from VisualElement) |
RotationY |
Gets or sets the rotation (in degrees) about the Y-axis (perspective rotation) when the element is rendered. (Inherited from VisualElement) |
Scale |
Gets or sets the scale factor applied to the element. (Inherited from VisualElement) |
ScaleX |
Gets or sets a scale value to apply to the X direction. (Inherited from VisualElement) |
ScaleY |
Gets or sets a scale value to apply to the Y direction. (Inherited from VisualElement) |
Style | (Inherited from NavigableElement) |
StyleClass | (Inherited from NavigableElement) |
StyleId |
Gets or sets a user defined value to uniquely identify the element. (Inherited from Element) |
TabIndex | (Inherited from VisualElement) |
TranslationX |
Gets or sets the X translation delta of the element. (Inherited from VisualElement) |
TranslationY |
Gets or sets the Y translation delta of the element. (Inherited from VisualElement) |
Triggers |
Gets the list of Trigger associated to this element. This is a bindable property. (Inherited from VisualElement) |
VerticalOptions |
Gets or sets the LayoutOptions that define how the element gets laid in a layout cycle. This is a bindable property. (Inherited from View) |
Visual | (Inherited from VisualElement) |
Width |
Gets the current rendered width of this element. This is a read-only bindable property. (Inherited from VisualElement) |
WidthRequest |
Gets or sets the desired width override of this element. (Inherited from VisualElement) |
X |
Gets the current X position of this element. This is a read-only bindable property. (Inherited from VisualElement) |
Y |
Gets the current Y position of this element. This is a read-only bindable property. (Inherited from VisualElement) |
Methods
ApplyBindings() |
Apply the bindings to BindingContext. (Inherited from BindableObject) |
BatchBegin() |
Signals the start of a batch of changes to the elements properties. (Inherited from VisualElement) |
BatchCommit() |
Signals the end of a batch of commands to the element and that those commands should now be committed. (Inherited from VisualElement) |
ChangeVisualState() |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
ClearValue(BindableProperty) |
Clears any value set by SetValue for |
ClearValue(BindablePropertyKey) |
Clears any value set by SetValue for the property that is identified by |
CoerceValue(BindableProperty) | (Inherited from BindableObject) |
CoerceValue(BindablePropertyKey) | (Inherited from BindableObject) |
Descendants() |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
EffectIsAttached(String) |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
FindByName(String) |
Returns the element that has the specified name. (Inherited from Element) |
Focus() |
Attemps to set focus to this element. (Inherited from VisualElement) |
ForceLayout() |
Forces a layout cycle on the element and all of its descendants. (Inherited from Layout) |
GetChildElements(Point) |
Returns the child elements that are visually beneath the specified |
GetLayoutBounds(BindableObject) |
Gets the layout bounds of |
GetLayoutFlags(BindableObject) |
Gets the layout flags that were specified when |
GetSizeRequest(Double, Double) |
Obsolete.
Returns the SizeRequest of the Layout. Calling this method begins the measure pass of a layout cycle. (Inherited from Layout) |
GetValue(BindableProperty) |
Returns the value that is contained in the BindableProperty. (Inherited from BindableObject) |
GetValues(BindableProperty, BindableProperty, BindableProperty) |
Obsolete.
For internal use by the Xamarin.Forms platform. (Inherited from BindableObject) |
GetValues(BindableProperty, BindableProperty) |
Obsolete.
For internal use by the Xamarin.Forms platform. (Inherited from BindableObject) |
InvalidateLayout() |
Invalidates the current layout. (Inherited from Layout) |
InvalidateMeasure() |
Method that is called to invalidate the layout of this VisualElement. Raises the MeasureInvalidated event. (Inherited from VisualElement) |
InvalidateMeasureNonVirtual(InvalidationTrigger) |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
IsSet(BindableProperty) |
Returns |
Layout(Rectangle) |
Updates the bounds of the element during the layout cycle. (Inherited from VisualElement) |
LayoutChildren(Double, Double, Double, Double) |
Positions and sizes the children of an AbsoluteLayout. |
LowerChild(View) |
Sends a child to the back of the visual stack. (Inherited from Layout) |
Measure(Double, Double, MeasureFlags) |
Returns the minimum size that a visual element needs in order to be displayed on the device. (Inherited from VisualElement) |
NativeSizeChanged() |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
On<T>() |
Returns the configuration object that the developer can use to call platform-specific methods for the layout. |
OnAdded(T) |
Invoked when a child is added to the layout. Implement this method to add class handling for this event. (Inherited from Layout<T>) |
OnBindingContextChanged() |
Invoked whenever the binding context of the View changes. Override this method to add class handling for this event. (Inherited from View) |
OnChildAdded(Element) |
Called when a child is added to the AbsoluteLayout. |
OnChildMeasureInvalidated() |
Invoked whenever a child of the layout has emitted MeasureInvalidated. Implement this method to add class handling for this event. (Inherited from Layout) |
OnChildMeasureInvalidated(Object, EventArgs) |
Invoked whenever a child of the layout has emitted MeasureInvalidated. Implement this method to add class handling for this event. (Inherited from Layout) |
OnChildRemoved(Element, Int32) | |
OnChildRemoved(Element) |
Obsolete.
Called when a child is removed from the AbsoluteLayout. |
OnChildrenReordered() |
Invoked whenever the ChildrenReordered event is about to be emitted. Implement this method to add class handling for this event. (Inherited from VisualElement) |
OnMeasure(Double, Double) |
Method that is called when a layout measurement happens. (Inherited from VisualElement) |
OnParentSet() | (Inherited from NavigableElement) |
OnPropertyChanged(String) |
Method that is called when a bound property is changed. (Inherited from Element) |
OnPropertyChanging(String) |
Call this method from a child class to notify that a change is going to happen on a property. (Inherited from BindableObject) |
OnRemoved(T) |
Invoked when a child is removed from the layout. Implement this method to add class handling for this event. (Inherited from Layout<T>) |
OnSizeAllocated(Double, Double) |
This method is called when the size of the element is set during a layout cycle. This method is called directly before the SizeChanged event is emitted. Implement this method to add class handling for this event. (Inherited from Layout) |
OnSizeRequest(Double, Double) |
Obsolete.
Called during the measure pass of a layout cycle to get the desired size of the AbsoluteLayout. |
OnTabIndexPropertyChanged(Int32, Int32) | (Inherited from VisualElement) |
OnTabStopPropertyChanged(Boolean, Boolean) | (Inherited from VisualElement) |
RaiseChild(View) |
Sends a child to the front of the visual stack. (Inherited from Layout) |
RemoveBinding(BindableProperty) |
Removes a previously set binding. (Inherited from BindableObject) |
RemoveDynamicResource(BindableProperty) |
Removes a previously set dynamic resource (Inherited from Element) |
ResolveLayoutChanges() | (Inherited from Layout) |
SetBinding(BindableProperty, BindingBase) |
Assigns a binding to a property. (Inherited from BindableObject) |
SetDynamicResource(BindableProperty, String) |
Sets the BindableProperty property of this element to be updated via the DynamicResource with the provided key. (Inherited from Element) |
SetLayoutBounds(BindableObject, Rectangle) |
Sets the layout bounds of a view that will be used to size it when it is layed out. |
SetLayoutFlags(BindableObject, AbsoluteLayoutFlags) |
Sets the layout flags of a view that will be used to interpret the layout bounds set on it when it is added to the layout. |
SetValue(BindableProperty, Object) |
Sets the value of the specified property. (Inherited from BindableObject) |
SetValue(BindablePropertyKey, Object) |
Sets the value of the propertyKey. (Inherited from BindableObject) |
SetValueCore(BindableProperty, Object, SetValueFlags) |
For internal use by the Xamarin.Forms platform. (Inherited from BindableObject) |
SetValueFromRenderer(BindableProperty, Object) |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
SetValueFromRenderer(BindablePropertyKey, Object) |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
ShouldInvalidateOnChildAdded(View) |
When implemented, should return |
ShouldInvalidateOnChildRemoved(View) |
When implemented, should return |
SizeAllocated(Double, Double) |
SizeAllocated is called during a layout cycle to signal the start of a sub-tree layout. (Inherited from VisualElement) |
TabIndexDefaultValueCreator() | (Inherited from VisualElement) |
TabStopDefaultValueCreator() | (Inherited from VisualElement) |
UnapplyBindings() |
Unapplies all previously set bindings. (Inherited from BindableObject) |
Unfocus() |
Unsets focus to this element. (Inherited from VisualElement) |
UpdateChildrenLayout() |
Instructs the layout to relayout all of its children. (Inherited from Layout) |
Events
BatchCommitted |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
BindingContextChanged |
Raised whenever the BindingContext property changes. (Inherited from BindableObject) |
ChildAdded |
Occurs whenever a child element is added to the element. (Inherited from Element) |
ChildRemoved |
Occurs whenever a child element is removed from the element. (Inherited from Element) |
ChildrenReordered |
Occurs when the Children of a VisualElement have been re-ordered. (Inherited from VisualElement) |
DescendantAdded |
Occurs whenever a child element is added to the elements subtree. (Inherited from Element) |
DescendantRemoved |
Occurs whenever a child element is removed from the elements subtree. (Inherited from Element) |
FocusChangeRequested |
For internal use by the Xamarin.Forms platform. (Inherited from VisualElement) |
Focused |
Occurs when the element receives focus. (Inherited from VisualElement) |
LayoutChanged |
Occurs at the end of a layout cycle if any of the child element's Bounds have changed. (Inherited from Layout) |
MeasureInvalidated |
Event that is raised when the layout of a visual element is invalidated. (Inherited from VisualElement) |
PlatformSet |
Obsolete.
(Inherited from Element)
|
PropertyChanged |
Raised when a property has changed. (Inherited from BindableObject) |
PropertyChanging |
Raised when a property is about to change. (Inherited from BindableObject) |
SizeChanged |
Occurs when either the Width or the Height properties change value on this element. (Inherited from VisualElement) |
Unfocused |
Occurs when the element loses focus. (Inherited from VisualElement) |
Explicit Interface Implementations
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
For internal use by the Xamarin.Forms platform. (Inherited from BindableObject) |
IElementController.SetValueFromRenderer(BindableProperty, Object) |
For internal use by the Xamarin.Forms platform. (Inherited from Element) |
IGestureController.CompositeGestureRecognizers |
For internal use by the Xamarin.Forms platform. (Inherited from View) |
INameScope.RegisterName(String, Object) |
For internal use only. (Inherited from Element) |
IVisualElementController.EffectiveFlowDirection |
Gets the effective visual flow direction for the element on the platform, taking into account the locale and logical flow settings. (Inherited from VisualElement) |
IVisualElementController.InvalidateMeasure(InvalidationTrigger) |
This method is for internal use. (Inherited from VisualElement) |