请问有人能告诉我如何在代码中设置android:layout_weight和android:layout_width这两个XML属性来动态创建视图吗?
参考链接:XML Table layout? Two EQUAL-width rows filled with equally width buttons?
参考链接:XML Table layout? Two EQUAL-width rows filled with equally width buttons?
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
myview.setLayoutParams(lp);
在构造函数中,您还可以指定固定像素大小,而不是常量。但由于设备的多样性,在Android上使用固定像素是一个坏主意。
不过,您可以从dp
大小计算像素,这是可以的:
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
10, getResources.getDisplayMetrics());
(这里:将10dp转换为像素值)
尝试
setLayoutParams(new LayoutParams(width, height))
构造函数的文档如下:
ViewGroup.LayoutParams(int width, int height)
使用指定的宽度和高度创建新的布局参数集。
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT,
2f
);
myView.setLayoutParams(param)
这里的最后一个参数“2f”指定了视图的布局权重。我们也可以在这里使用小数点。
LinearLayout
必须使用LinearLayout.LayoutParams
而不是通用的ViewGroup.LayoutParams
(虽然编译时可以通过,但在运行时会失败)。其他布局可能也是如此,但我曾经为此苦恼了很长时间。 - Neil C. Obremski