【发布时间】:2017-11-09 12:36:50
【问题描述】:
谁能告诉我如何在代码中为动态创建的视图设置 android:layout_weight 和 android:layout_width XML 属性?
参考:XML Table layout? Two EQUAL-width rows filled with equally width buttons?
【问题讨论】:
谁能告诉我如何在代码中为动态创建的视图设置 android:layout_weight 和 android:layout_width XML 属性?
参考: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 转换为像素值)
【讨论】:
RelativeLayouts,但它与两个Buttons 的工作方式相同。
LinearLayout 必须使用LinearLayout.LayoutParams 而不是通用的ViewGroup.LayoutParams(编译但在运行时失败)。这可能适用于其他布局,也可能不适用,但我对此摸不着头脑
试试
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”指定视图的布局权重。我们也可以在这里使用小数点。
【讨论】: