如何以编程方式设置Button的权重

时间:2012-10-22 17:04:46

标签: android

我需要通过Java代码为我的Android应用程序实现Dialog,所以我不能使用XML。

我有root LinearLayout,我实现了范围搜索栏,然后我在根布局下有另一个LinearLayout,水平方向,我想在同一行添加两个按钮。所以我需要将权重设置为1,宽度设置为FILL_PARENT,高度设置为WRAP_CONTENT

如何使用Java代码执行此操作?

4 个答案:

答案 0 :(得分:58)

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
p.weight = 1;

rangeSeekBar.setLayoutParams(p);

我不确定您要在哪个视图上设置布局参数。我只是假设rangeSeekbar显示了一个例子。如果需要,可以改变。

使用布局参数时,请始终使用root的参数类型..

实施例。如果您有View,则希望在RelativeLayout使用RelativeLayout.LayoutParams内使用params ..

答案 1 :(得分:16)

您可以将其作为LinearLayout.LayoutParams构造函数的一部分传递: 你的意思是wrap_content吗?

LayoutParams param = new LinearLayout.LayoutParams(
                         LayoutParams.MATCH_PARENT,
                         LayoutParams.WRAP_CONTENT, 1.0f);

1.0f是重量

答案 2 :(得分:0)

不使用XML是一项要求吗?如果没有,您可以始终使用XML构建布局,然后在运行时使用LayoutInflater来构建视图层次结构并将其传递给对话框中的setView()

例如:

LayoutInflater inflater = LayoutInflater.from(getActivity());
View v = inflater.inflate(R.layout.my_dialog_layout, null);

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(v);

答案 3 :(得分:0)

更简单的方法:

public static void setLayoutWeight(View view , float weight)
{
    ((LinearLayout.LayoutParams) view.getLayoutParams()).weight = weight;
    view.requestLayout();
}