Xamarin.Android C# 如何编程向GridLayout添加视图并指定行列跨度
Xamarin.Android 编程向GridLayout添加自定义跨度视图实现方案
以下为C#实现的完整步骤,原生控件和AndroidX兼容控件用法一致,可按需替换。
1. 引入必要命名空间
using Android.App; using Android.Widget; using Android.OS; using Android.Views;
2. 核心实现步骤
- 第一步:获取或初始化GridLayout实例
// 方式1:直接在代码中新建GridLayout var gridLayout = new GridLayout(this); // 根据业务需求设置GridLayout总行列数 gridLayout.RowCount = 3; gridLayout.ColumnCount = 3; gridLayout.LayoutParameters = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); // 方式2:从XML布局中加载已有GridLayout // var gridLayout = FindViewById<GridLayout>(Resource.Id.your_grid_id);
- 第二步:创建需要添加的自定义视图,以TextView为例,可替换为任意View类型
var targetView = new TextView(this); targetView.Text = "跨2行2列测试视图"; targetView.SetBackgroundColor(Android.Graphics.Color.LightBlue); targetView.Gravity = GravityFlags.Center;
- 第三步:配置布局参数,指定行、列位置和跨度属性
// GridLayout.LayoutParams构造参数依次为 行配置、列配置 // InvokeSpec参数依次为 起始索引(从0开始计数)、跨度值、可选权重参数 var layoutParams = new GridLayout.LayoutParams( GridLayout.InvokeSpec(0, 2), // 起始行索引为0,行跨度为2 GridLayout.InvokeSpec(0, 2) // 起始列索引为0,列跨度为2 ); // 可选配置:设置边距、宽高等属性 layoutParams.SetMargins(10,10,10,10); targetView.LayoutParameters = layoutParams;
- 第四步:将视图添加到GridLayout
gridLayout.AddView(targetView); // 如果是代码新建的GridLayout,需要挂载到父容器/设置为页面内容 SetContentView(gridLayout);
3. 注意事项
- 配置的行/列跨度不要超过GridLayout预先设置的
RowCount/ColumnCount,否则超出部分不会渲染 - 需要按占比分配宽高时,可给
InvokeSpec传入第三个权重参数,同时把对应方向的宽/高设为0即可,例:GridLayout.InvokeSpec(0,2,1f)表示该行列方向权重为1 - 低版本系统兼容可使用
AndroidX.Widget.GridLayout替换原生Android.Widget.GridLayout,用法完全一致
内容的提问来源于stack exchange,提问作者NicholaiRen
相关产品推荐
相关产品推荐

