运行此 Activity 时出现非法参数异常。有人能指出为什么吗?我对 Specs 的评论可能会让您误解我对这段代码的理解:
[Activity(Label = "Views/Layouts/GridLayout/3. Form (Java)", MainLauncher = true)]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new string[] { })]
public class GridLayout3 : Activity {
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
SetContentView(Grid(this));
//SetContentView (Create (this));
}
public static View Grid(Context context) {
GridLayout gL = new GridLayout(context);
gL.AlignmentMode = GridAlign.Bounds;
gL.UseDefaultMargins = true;
//gL.ColumnOrderPreserved = false;
//gL.RowOrderPreserved = false;
gL.RowCount = 5;
gL.ColumnCount = 5;
//I want these Specs to tell the View to take up 2 rows of space.
//IE, (row 0-indexed) of 3 and 4 in column 4 should contain
//the same button
GridLayout.Spec specialRowSpec = GridLayout.InvokeSpec(3, 4);
GridLayout.Spec specialColSpec = GridLayout.InvokeSpec(4);
bool keyIsSpecial = false;
for (int i = 0; i < gL.RowCount; i++) {
GridLayout.Spec row = GridLayout.InvokeSpec(i);
for (int v = 0; v < gL.ColumnCount; v++) {
GridLayout.Spec col = GridLayout.InvokeSpec(v);
Button bt = new Button(context);
bt.Text = "Tester";
if (i == 3 && v == 4) {
keyIsSpecial = true;
}
if (keyIsSpecial) {
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.RowSpec = specialRowSpec;
param.ColumnSpec = specialColSpec;
param.Height = 100;
gL.AddView(bt, new GridLayout.LayoutParams(param));
return gL;
} else {
gL.AddView(bt, new GridLayout.LayoutParams(row, col));
}
if (v == gL.ColumnCount - 1) {
v = 0;
break;
}
}
}
return gL;
}
当我添加具有特殊规格的视图时引发异常:gL.AddView(bt, new GridLayout.LayoutParams(param));
这是我可能误解的 GridLayout.Spec 文档的链接:http: //developer.android.com/reference/android/widget/GridLayout.Spec.html
我还尝试将第二个参数交换为我的 specialRowSpec 以使用总大小(高度)而不是行的索引。例如:GridLayout.Spec specialRowSpec = GridLayout.InvokeSpec(3, 2);
这只是给了我一个 5 x 5 的按钮网格,没有跨越多行的按钮。
任何问题?