繁体   English   中英

如何以编程方式设置layout_weight?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM