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

32

我需要通过Java代码为我的Android应用程序实现对话框,因此无法使用XML。

我有一个根LinearLayout,我在其中实现了范围查找条,然后我在根布局下面有另一个水平方向的LinearLayout,我想在同一行中添加两个按钮。因此,我需要将重量设置为1,宽度设置为FILL_PARENT,高度设置为WRAP_CONTENT

我如何通过Java代码实现这个功能?

4个回答

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

rangeSeekBar.setLayoutParams(p);

我不确定您想设置布局参数的是哪个视图。我只是假设了范围拖动条以展示一个例子。如果需要,请更改。

在使用布局参数时,始终使用根参数类型...

例如,如果您想要在RelativeLayout中对View应用参数,请使用RelativeLayout.LayoutParams


18
你可以将它作为LinearLayout.LayoutParams构造函数的一部分传递: 你是不是想说wrap_content?
LayoutParams param = new LinearLayout.LayoutParams(
                         LayoutParams.MATCH_PARENT,
                         LayoutParams.WRAP_CONTENT, 1.0f);

1.0f 是权重


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);

0

更简单的方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接