xamarin拖一个gridview控件报错怎么解决_[笔记阁]Xamarin初探:版式面板(一)

ce24e7391f3b0592707d44c1a30d3ef4.png

5be9427d1802f22ad8c829dd0fb972e8.png

87eedbd9b367781953c5542dcdb2e1fe.png 工丅Shinichi1分钟前 在.NET程序员中,学习xamarin是一个自认为挺不错的跨平台开发框架,从此篇文章开始,将会逐步揭开xamarin的面纱。 什么是版式面板?

官方解释:版式面板是一种 Xamarin.Forms 容器,包含子视图的集合并决定子视图的大小和位置。应用大小更改时,版式面板会自动进行重新计算;例如,用户旋转设备时。

Xamarin.Forms 具有可供选择的多个版式面板。每个面板以不同的方式管理其子视图。你的任务是选择最适合所需用户界面的面板。下图显示了选项的概念性概述。

b0213ebfb6ad16b91f9bd95b22d812a4.png

自我理解:自我理解为布局视图,在前端布局当中具有多个布局方式,在设计不同UI界面调用不同布局来达到高效的构建效果。

视图默认大小 定义:如果未指定视图的大小,它将自动增加到足以容纳其内容的大小。 有个建议:在运行时给控件一个背景色,更有利于发现观察控件的大小。 093abdf16d0d15278c009a39063e0eea.png 指定视图大小   顾名思义也就是自定义视图大小。 使用方法与含义:View 基类定义影响视图大小的两个属性:WidthRequest 和 HeightRequest。通过 WidthRequest 可指定宽度,通过 HeightRequest 可指定高度。两个属性的类型都是 double。 0fd5ce99291cd02de9236cbf8420b524.png 尺寸单位 官方解释:设置 WidthRequest 和 HeightRequest 时,使用类似于 100 的文本值。在 Xamarin.Forms 级别,这些值没有单位。它们不是点或像素。它们只是 double 类型的值。Xamarin.Forms 在运行时将这些值传递到基础操作系统。操作系统提供确定数字含义所需的上下文: 在 iOS 上,这些值称为“点”
在 Android 上,它们是“与密度无关的像素”。 所呈现的视图大小 因为是由版式面板确定视图的大小,所以无法使用 WidthRequest 和 HeightRequest 在运行时指示实际大小。例如,假设为标签将 WidthRequest 设置为 100,但是面板没有足够的控件来满足该请求。面板会为标签提供宽度 80。此时,如果查看 WidthRequest 属性的值,该值为 100,即使呈现的值为 80。 若要解决此问题,View 基类需定义其他两个名为 Width 和 Height 的属性。这些属性的类型是 double,表示所呈现的视图宽度和高度。无论何时检索视图的大小,都应使用 Width 和 Height 属性。 指定视图的位置 此外,需要设置视图位置。例如,回想一下,在登录页面示例中,我们希望将登录按钮的大小调整为屏幕宽度的一半。由于登录按钮的宽度不到屏幕的整个宽度,因此有其他剩余空间,可将其进行移动。可以将其放置在屏幕左边、右边或中心。 View 基类具有用于设置视图位置的两个属性:VerticalOptions 和 HorizontalOptions。这些设置会影响视图在版式面板为其分配的矩形内的位置。可以指定视图与矩形四条边之一对齐,或者让该视图占据整个矩形。 指定 VerticalOptions 或 HorizontalOptions 的值比设置大小更难,因为它们的类型是 LayoutOptions。 什么是LayoutOptions? 官方解释:LayoutOptions 为 C# 类型,包含两个布局首选项:Alignment 和 Expands。这两个属性与位置相关,但它们彼此不相关。 示例代码:定义方法如下 ⬇️ public struct LayoutOptions {    public LayoutAlignment Alignment { get; set; }    public bool Expands { get; set; } } 自我理解:两个布局选项,自我认为是布局方式,如最常见的Alignment属性,在这里拥有以下所介绍的作用 ⬇  LayoutAlignment? 官方解释:LayoutAlignment 是包含四个值的枚举:Start、Center、End 和 Fill。可以使用这些值来控制子视图在版式面板为其提供的矩形内的位置。 自我理解:其实官方解释已经说得很明白,其中包含四个表述为位置的值,分别代表:开头、居中、末尾、填充,这三个值代码写法在视图上的显示如下图。(因为我这里使用的是垂直 StackLayout,因此每个子视图都有一行。) ac92e1e0237050684633097e89809a88.png  Expands? 官方解释:LayoutOptions 结构的第二个属性是 Expands。Expands 属性是 bool,使 StackLayout 中的视图能够请求额外的空间(如果有)。 57f9e180a06f1295dc5a141f599aa763.png 自我理解:倘若在使用此属性时,子视图拥有额外的显示空间,将会将此额外空间保留,其他子视图无法占用,表面上就是一个空白区域。 如何请求额外空间 如果想请求额外空间,可将 LayoutOptions 值替换为这些值之一:StartAndExpand、CenterAndExpand、EndAndExpand 或 FillAndExpand。 下面是每个值的作用方式: 橙色框是视图,灰色矩形表示 Expands 属性为其提供的额外空间。仅当使用 FillAndExpand 值时,视图才会填充额外空间。使用其他值时,额外空间仍留空,但 StackLayout 中的其他视图无法使用。 3d1f20b8a4ee24571cee925e62b305ac.png 什么是 StackLayout? 官方解释:StackLayout 是布局容器,用于将其子级按从左到右或从上到下的顺序排列。具体方向取决于其 Orientation 属性,默认值为从上到下。下图显示了垂直 StackLayout 的概念视图。 cbefc9218ac814d483b73d12903d2f3b.png 自我理解:理解为一串冰糖葫芦或者烤肉就好了...... 如何将视图添加到 StackLayout 可以使用C代码将视图添加到 Children 集合,然后 StackLayout 会自动调整垂直列表中的视图的大小和位置。 var a = new BoxView() { BackgroundColor = Color.Silver }; stack.Children.Add(a); 可以使用XAML代码             视图在 StackLayout 中的排序方式 在 Children 集合中的排序是怎么样的布局就是怎么样的排序。对于使用 XAML 添加的视图,则使用代码文本顺序排序。对于通过代码添加的子级,布局顺序就是调用 Add 方法的顺序。 如何更改 StackLayout 中视图之间的空间 我很不喜欢挤在一起的感觉,所以我通常会希望 StackLayout 的子级之间留出一些空间。StackLayout 会自动在每个子级之间添加一些空间,但是如果不满意,同样可以使用 Spacing 属性来控制空间大小。默认值为六个单位,但可以将其设置为所需的任何值。 98e487f7e4d6a5124b6ce76987afaef5.png 如何更改 StackLayout 中视图的方向 这里就用到了Orientation 属性,其中有Horizontal(水平),Vertical(垂直)。很好理解自己实践即可,这里就不再赘述。 *笔记参考微软虚拟学院:https://docs.microsoft.com/zh-cn/learn/modules/customize-layout-in-xamarin-forms-xaml-pages/4-arrange-view-with-stacklayout
*部分可能带有个人意见看法,可能表述不规范,为此这些地方引用了官方解释 。

eaf55050a55b017d90d15a1c625969bf.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值