如何在代码中设置android:layout_weight和android:layout_width?

时间:2011-09-11 14:34:01

标签: android android-layout

有人可以告诉我如何在代码中为动态创建的视图设置android:layout_weight和android:layout_width XML属性吗?

参考:XML Table layout? Two EQUAL-width rows filled with equally width buttons?

3 个答案:

答案 0 :(得分:18)

使用ViewGroup.LayoutParams

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转换为像素值)

答案 1 :(得分:2)

尝试

setLayoutParams(new LayoutParams(width, height))

构造函数的文档说:

ViewGroup.LayoutParams(int width, int height)

使用指定的宽度和高度创建一组新的布局参数。

答案 2 :(得分:1)

设置动态创建视图的布局参数,如下所示

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.MATCH_PARENT,
                            LinearLayout.LayoutParams.WRAP_CONTENT,
                            2f
                    );
myView.setLayoutParams(param) 

此处最后一个参数'2f'指定视图的布局权重。我们也可以在这里使用小数点。