AbsoluteLayout 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将子元素放在绝对位置。
public class AbsoluteLayout : Xamarin.Forms.Layout<Xamarin.Forms.View>, Xamarin.Forms.IElementConfiguration<Xamarin.Forms.AbsoluteLayout>
type AbsoluteLayout = class
inherit Layout<View>
interface IElementConfiguration<AbsoluteLayout>
- 继承
-
System.ObjectAbsoluteLayout
- 实现
注解
应用程序开发人员可以通过提供比例坐标、设备坐标或两者的组合来控制子元素的位置,具体取决于 AbsoluteLayoutFlags 传递给 SetLayoutFlags(BindableObject, AbsoluteLayoutFlags) 方法的值。 当提供其中一个比例 AbsoluteLayoutFlags 枚举值时,介于 0.0 和 1.0 之间的相应 X 或 Y 参数将始终导致子项完全显示在屏幕上。 也就是说,无需减去或添加子项的高度或宽度,即可将其与 左侧、右侧、顶部或底部 AbsoluteLayout齐平。 对于未按比例指定的宽度、高度、X 或 Y 值,应用程序开发人员使用与设备相关的单位来定位子元素并调整其大小。
以下示例演示如何使用 AbsoluteLayout 具有比例位置参数的 。
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);
下面的代码示例演示如何通过指定与设备相关的单位来放置两个标签。
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);
}
下图显示了 FormsGallery 示例中的 AbsoluteLayout 演示。
Xamarin 的 XAML。Forms支持 类的以下附加属性AbsoluteLayout:
附加属性 | 值 |
---|---|
AbsoluteLayout.LayoutBounds | 一个逗号分隔的列表(可能包含空格),其中包含四个值,用于指定边界矩形的位置和尺寸。 列表中的前两个值必须表示数字。 后两个值可以是数字或字符串“AutoSize”。 附加 |
AbsoluteLayout.LayoutFlags |
AbsoluteLayoutFlags枚举值名称: |
应用程序开发人员可以使用 XAML 在 类中 AbsoluteLayout 布局元素。 下面的示例将蓝色 BoxView 置于 内 AbsoluteLayout:
<AbsoluteLayout VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<BoxView AbsoluteLayout.LayoutBounds="0.25, 0.25, 0.5, 0.5"
Color="Blue"
AbsoluteLayout.LayoutFlags="All" />
</AbsoluteLayout>
类 AbsoluteLayout 可以按比例单位、设备单位或两者的组合来放置其子元素。 应用程序开发人员在指定 Rectangle 将定义子元素的布局边界的结构时,应记住以下几点:
- 对于高度和宽度适合屏幕的元素,[0,1] 范围内的比例位置尺寸表示完全在屏幕上的元素,无论高度、宽度还是两者都以设备或比例单位指定。:
-
上述点意味着,若要指定屏幕右下角的元素,其宽度为屏幕的一AbsoluteLayoutFlags
All
半,值为 的一半,应用程序开发人员将指定“1.0, 1.0, 0.5, 0.5”: - 应用开发人员可能会无意中导致按比例指定了一个或两个大小维度的子元素在屏幕外部分显示或完全隐藏,方法是指定设备单元位置,这些位置不会为子元素的计算大小留出足够的空间。:
- 边界 Rectangle 结构的每个部分都根据 AbsoluteLayoutFlags 控制它的值进行解释。 例如,给定矩形可能具有以设备单位表示的 X 坐标、以比例单位表示的 Y 坐标、以比例单位表示的高度和以设备单位表示的宽度,或者设备和比例单位的任何其他组合。 :
- 使用子级上的当前 AbsoluteLayoutFlags 集来解释的矩形表示部分或完全脱离屏幕的边界框(例如,宽度大于屏幕宽度)可能会产生意外结果::
构造函数
AbsoluteLayout() |
初始化 AbsoluteLayout 类的新实例。 |
字段
LayoutBoundsProperty |
实现表示子元素的布局边界的附加属性。 可在运行时使用字符串“LayoutBounds”绑定。 请参阅“备注”。 |
LayoutFlagsProperty |
实现包含子元素的 AbsoluteLayoutFlags 值的附加属性。 |
属性
AnchorX |
获取或设置任何转换的中心点的 X 部分,相对于元素的边界。 这是一种可绑定属性。 (继承自 VisualElement) |
AnchorY |
获取或设置任何转换的中心点的 Y 部分,相对于元素的边界。 这是一种可绑定属性。 (继承自 VisualElement) |
AutomationId |
获取或设置允许自动化框架查找此元素并与其交互的值。 (继承自 Element) |
AutoSize |
指示是否应按子元素的本机大小调整其宽度或高度的值。 |
Background |
将子元素放在绝对位置。 (继承自 VisualElement) |
BackgroundColor |
获取或设置将填充 VisualElement 背景的颜色。 这是一种可绑定属性。 (继承自 VisualElement) |
Batched |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
Behaviors |
获取与此元素关联的 Behavior 列表。 这是一种可绑定属性。 (继承自 VisualElement) |
BindingContext |
获取或设置对象,该对象包含将被属于此 BindableObject 的绑定属性设定为目标的属性。 (继承自 BindableObject) |
Bounds |
获取元素的边界。 (继承自 VisualElement) |
CascadeInputTransparent |
获取或设置一个值,该值控制子元素在透明度为 |
Children |
获取 AbsoluteLayout 的子元素集合。 |
class |
将子元素放在绝对位置。 (继承自 NavigableElement) |
ClassId |
获取或设置用于标识语义相似元素集合的值。 (继承自 Element) |
Clip |
将子元素放在绝对位置。 (继承自 VisualElement) |
DisableLayout |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
Dispatcher |
将子元素放在绝对位置。 (继承自 BindableObject) |
EffectControlProvider |
供 Xamarin.Forms 平台内部使用。 (继承自 Element) |
Effects |
应用于此项的效果列表。 (继承自 Element) |
FlowDirection |
获取或设置布局流方向。 (继承自 VisualElement) |
GestureController |
获取视图的手势控制器。 (继承自 View) |
GestureRecognizers |
与此视图关联的手势识别器的集合。 (继承自 View) |
Height |
获取此元素的当前呈现高度。 这是一种只读可绑定属性。 (继承自 VisualElement) |
HeightRequest |
获取或设置此元素的所需高度替代。 (继承自 VisualElement) |
HorizontalOptions |
获取或设置 LayoutOptions,它定义元素在布局周期中的布局方式。 这是一种可绑定属性。 (继承自 View) |
Id |
获取可用于通过运行应用程序唯一地标识元素的值。 (继承自 Element) |
InputTransparent |
获取或设置一个值,该值指示此元素是否应涉及用户交互周期。 这是一种可绑定属性。 (继承自 VisualElement) |
IsClippedToBounds |
获取或设置一个值,该值确定布局是否应将其子级剪裁到其边界。 (继承自 Layout) |
IsEnabled |
获取或设置一个值,该值指示是否在用户界面中启用此元素。 这是一种可绑定属性。 (继承自 VisualElement) |
IsFocused |
获取一个值,该值指示当前是否聚焦此元素。 这是一种可绑定属性。 (继承自 VisualElement) |
IsInNativeLayout |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
IsNativeStateConsistent |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
IsPlatformEnabled |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
IsTabStop |
获取或设置指明此元素是否包含在选项卡导航中的值。 这是一种可绑定属性。 (继承自 VisualElement) |
IsVisible |
获取或设置一个值,该值确定此元素是否应属于可视化树的一部分。 这是一种可绑定属性。 (继承自 VisualElement) |
LogicalChildren |
供 Xamarin.Forms 平台内部使用。 (继承自 Element) |
Margin |
获取或设置视图的边距。 (继承自 View) |
MinimumHeightRequest |
获取或设置一个值,该值将替代元素在布局期间请求的最小高度。 (继承自 VisualElement) |
MinimumWidthRequest |
获取或设置一个值,该值将替代元素在布局期间请求的最小宽度。 (继承自 VisualElement) |
Navigation |
将子元素放在绝对位置。 (继承自 NavigableElement) |
NavigationProxy |
将子元素放在绝对位置。 (继承自 NavigableElement) |
Opacity |
获取或设置呈现元素时应用于元素的不透明度值。 这是一种可绑定属性。 (继承自 VisualElement) |
Padding |
获取或设置布局的内部填充。 (继承自 Layout) |
Parent |
获取或设置元素的父元素。 (继承自 Element) |
ParentView |
已过时.
获取作为 VisualElement 的此元素的最近的上级元素。 (继承自 Element) |
Platform |
已过时.
将子元素放在绝对位置。 (继承自 Element) |
RealParent |
供 Xamarin.Forms 平台内部使用。 (继承自 Element) |
Resources |
获取或设置本地资源字典。 (继承自 VisualElement) |
Rotation |
获取或设置呈现元素时围绕 Z 轴(仿射旋转)的旋转角度(以度为单位)。 (继承自 VisualElement) |
RotationX |
获取或设置呈现元素时围绕 X 轴(透视旋转)的旋转角度(以度为单位)。 (继承自 VisualElement) |
RotationY |
获取或设置呈现元素时围绕 Y 轴(透视旋转)的旋转角度(以度为单位)。 (继承自 VisualElement) |
Scale |
获取或设置应用于元素的比例因子。 (继承自 VisualElement) |
ScaleX |
获取或设置要应用于 X 方向的缩放值。 (继承自 VisualElement) |
ScaleY |
获取或设置要应用于 Y 方向的缩放值。 (继承自 VisualElement) |
Style |
将子元素放在绝对位置。 (继承自 NavigableElement) |
StyleClass |
将子元素放在绝对位置。 (继承自 NavigableElement) |
StyleId |
获取或设置用于唯一地标识元素的用户定义的值。 (继承自 Element) |
TabIndex |
将子元素放在绝对位置。 (继承自 VisualElement) |
TranslationX |
获取或设置元素的 X 转换增量。 (继承自 VisualElement) |
TranslationY |
获取或设置元素的 Y 转换增量。 (继承自 VisualElement) |
Triggers |
获取与此元素关联的 Trigger 列表。 这是一种可绑定属性。 (继承自 VisualElement) |
VerticalOptions |
获取或设置 LayoutOptions,它定义元素在布局周期中的布局方式。 这是一种可绑定属性。 (继承自 View) |
Visual |
将子元素放在绝对位置。 (继承自 VisualElement) |
Width |
获取此元素的当前呈现宽度。 这是一种只读可绑定属性。 (继承自 VisualElement) |
WidthRequest |
获取或设置此元素的所需宽度替代。 (继承自 VisualElement) |
X |
获取此元素的当前 X 位置。 这是一种只读可绑定属性。 (继承自 VisualElement) |
Y |
获取此元素的当前 Y 位置。 这是一种只读可绑定属性。 (继承自 VisualElement) |
方法
事件
BatchCommitted |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
BindingContextChanged |
只要 BindingContext 属性更改就会引发。 (继承自 BindableObject) |
ChildAdded |
每当将子元素添加到元素时就会发生。 (继承自 Element) |
ChildRemoved |
每当从元素中删除子元素时就会发生。 (继承自 Element) |
ChildrenReordered |
重新排序 VisualElement 的子级时发生。 (继承自 VisualElement) |
DescendantAdded |
每当将子元素添加到元素子树时就会发生。 (继承自 Element) |
DescendantRemoved |
每当从元素子树中删除子元素时就会发生。 (继承自 Element) |
FocusChangeRequested |
供 Xamarin.Forms 平台内部使用。 (继承自 VisualElement) |
Focused |
元素接收焦点时发生。 (继承自 VisualElement) |
LayoutChanged |
如果任何子元素的 Bounds 已更改,则在布局循环结束时发生。 (继承自 Layout) |
MeasureInvalidated |
可视元素的布局无效时引发的事件。 (继承自 VisualElement) |
PlatformSet |
已过时.
将子元素放在绝对位置。 (继承自 Element) |
PropertyChanged |
在属性已更改时引发。 (继承自 BindableObject) |
PropertyChanging |
在属性将要更改时引发。 (继承自 BindableObject) |
SizeChanged |
当此元素上的 Width 或 Height 属性的值发生更改时发生。 (继承自 VisualElement) |
Unfocused |
当元素丢失焦点时发生。 (继承自 VisualElement) |
显式接口实现
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
供 Xamarin.Forms 平台内部使用。 (继承自 BindableObject) |
IElementController.SetValueFromRenderer(BindableProperty, Object) |
供 Xamarin.Forms 平台内部使用。 (继承自 Element) |
IGestureController.CompositeGestureRecognizers |
供 Xamarin.Forms 平台内部使用。 (继承自 View) |
INameScope.RegisterName(String, Object) |
仅限内部使用。 (继承自 Element) |
IVisualElementController.EffectiveFlowDirection |
获取平台上元素的有效可视流方向,考虑区域设置和逻辑流设置。 (继承自 VisualElement) |
IVisualElementController.InvalidateMeasure(InvalidationTrigger) |
此方法仅供内部使用。 (继承自 VisualElement) |