【发布时间】:2020-07-08 16:08:37
【问题描述】:
我想动态创建一个 GridLayout,传递行数和列数并在运行时填充任何特定的网格单元格。到目前为止,我成功地制作了 2*2 的网格布局,但是当我尝试在第 2 行和第 2 列填充按钮时,默认情况下它位于第 1 行和第 1 列。
我的目标是通过保持其他网格单元空置来将任何 UIElement(如按钮或 TextView)放置在任何网格上。但我不确定如何实现这一目标。请帮助我缺少什么。
我只能从第一个填充 GridCell 吗?
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
RelativeLayout mainlayout = new RelativeLayout(this);
RelativeLayout.LayoutParams layoutparameter = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent,
RelativeLayout.LayoutParams.MatchParent);
mainlayout.LayoutParameters = layoutparameter;
GridLayout gl = (GridLayout)getView();
mainlayout.AddView(gl);
SetContentView(mainlayout);
}
private GridLayout getView()
{
GridLayout gridlayout = new GridLayout(this);
Button b = new Button(this);
b.Text = "Button1";
var p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent,
ViewGroup.LayoutParams.MatchParent);
gridlayout.LayoutParameters = p;
gridlayout.RowCount = 2;
gridlayout.ColumnCount = 2;
addViewToGridLayout(gridlayout, b, 2, 1, 2, 1);
return gridlayout;
}
private void addViewToGridLayout(GridLayout pGridLayout, View view, int row, int pRowSpan, int column, int pColumnSpan)
{
Spec rowSpan = GridLayout.InvokeSpec(GridLayout.Undefined, row);
Spec colspan = GridLayout.InvokeSpec(GridLayout.Undefined, column);
GridLayout.LayoutParams gridParam = new GridLayout.LayoutParams(
rowSpan, colspan);
pGridLayout.AddView(view, gridParam);
}
【问题讨论】:
标签: android xamarin.android grid-layout