![](/img/trans.png)
[英]Xamarin.Android C# layout_weight error: Must specify a unit, such as “px” (Intellisense?)
[英]How to set layout_weight programmatically?
免责声明:AFAIK 到目前为止,XAMARIN ANDROID尚未解决此问题。 对于Android / Java,它已被多次回答。
我的问题是我没有使用layout_weight作为参数的GridLayoutParams的构造函数重载...
以下是我尝试通过代码复制的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;
任何帮助表示赞赏。
它在各自的Spec
。
cbButtonLayoutParams.RowSpec.weight = 1; //might be Weight in C#
cbButtonLayoutParams.ColumnSpec.weight = 1;
我不确定是要行权还是列权,但这就是您要两者兼而有之的方式。
编辑:
我相信InvokeSpec()
等效于spec()
,这意味着第二个参数应该是权重,只要两个参数都是Int32
。
另外, layout_weight
通常仅在该元素的父级为LinearLayout时才适用。 您确定CheckBox实际上是添加到GridLayout而不是LinearLayout子级的吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.