以编程方式将视图高度设置为 0dp,将权重设置为 1

Set View height to 0dp and weight to 1 programatically

通过 xml 创建 GridView 时,我使用了以下代码,但我如何在运行时以编程方式实现它?

    android:layout_height="0dp"
    android:layout_weight="1"

谢谢。

使用这个

GridView YOUR_GRID_VIEW =(GridView )findViewById(R.id.GridView )
    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
                       /*width*/ ViewGroup.LayoutParams.MATCH_PARENT,
               /*height*/ 0,
               /*weight*/ 1.0f
                );
                YOUR_GRID_VIEW.setLayoutParams(param);

LayoutParams.MATCH_PARENT 是宽度,0 是高度,1.0f 是重量

如果 xml 中有 layout_weight,这意味着 GridView 的父布局是 LinearLayout

引用已经附加到视图层次结构的 GridView,您可以简单地获取该视图的 LayoutParams,将其转换为 LinearLayout.LayoutParams 并执行必要的更改:


    GridView gridView = ...;
    LinearLayout.LayoutParams params = gridView.getLayoutParams();
    params.weight = 1;
    params.height = 0;
    gridView.setLayoutParams(params);

否则,如果您从头开始构建 GridView,则应自行创建 LinearLayout.LayoutParams


    LinearLayout linearLayout = ...;
    GridView gridView = new GridView(context);
    LinearLayout.LayoutParams params = 
              new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
                          /* height */ 0,
                          /* weight */ 1);
    linearLayout.addView(gridView, params);