免责声明:AFAIK该问题到目前为止,对于XAMARIN ANDROID尚无答案。 Android/Java已被多次回答。
我的问题是我没有GridLayoutParams的构造函数重载,该构造函数将layout_weight作为参数...
以下是我要通过代码复制的XML:
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
不设置layout_weight会使控件(复选框)完全不可见。
这里是使用Xamarin Android代码的地方:
CheckBox cb = new CheckBox(this);
cb.Id = View.GenerateViewId();
GridLayout.LayoutParams cbButtonLayoutParams = new GridLayout.LayoutParams();
cbButtonLayoutParams.RowSpec = GridLayout.InvokeSpec(row, 1); // Setting row and rowspan respectivly
cbButtonLayoutParams.ColumnSpec = GridLayout.InvokeSpec(column, 1); // Setting col and colspan respectivley
cbButtonLayoutParams.Width = 0;
cbButtonLayoutParams.Height = GridLayout.LayoutParams.WrapContent;
cbButtonLayoutParams.SetGravity(GravityFlags.Center);
// How do I set the weight ? There is no property nor constructor...
// cbButtonLayoutParams.???
cb.LayoutParameters = cbButtonLayoutParams;
任何帮助表示赞赏。
答案 0 :(得分:0)
它在相应的Spec
下。
cbButtonLayoutParams.RowSpec.weight = 1; //might be Weight in C#
cbButtonLayoutParams.ColumnSpec.weight = 1;
我不确定您要行权还是列权,但这就是您要两者兼而有之的方式。
编辑:
我相信InvokeSpec()
等效于spec()
,这意味着第二个参数应为权重,只要两个参数均为Int32
。 / p>
此外,layout_weight
通常仅适用于该元素的父级为LinearLayout的情况。您确定CheckBox实际上是添加到GridLayout而不是LinearLayout子级吗?