Android “如何设置”;应用:布局“U柱重量”;来自代码?

Android “如何设置”;应用:布局“U柱重量”;来自代码?,android,android-layout,Android,Android Layout,我试图从代码中分配属性“app:layout\u columnWeight”。我尝试“GridLayout.LayoutParams”并将样式应用于模板。我需要使用此属性,因为“android:layout\u columnWeight”在Api中不起作用请尝试: ((GridLayout.LayoutParams) button.getLayoutParams()).columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f); 如果

我试图从代码中分配属性“app:layout\u columnWeight”。我尝试“GridLayout.LayoutParams”并将样式应用于模板。我需要使用此属性,因为“android:layout\u columnWeight”在Api中不起作用请尝试:

((GridLayout.LayoutParams) button.getLayoutParams()).columnSpec =
    GridLayout.spec(GridLayout.UNDEFINED, 1f); 
如果视图已添加到布局中

或者在您的代码中:

替换

 android.support.v7.widget.GridLayout.LayoutParams params=new android.support.v7.widget.GridLayout.LayoutParams();


如果有人想要询问我的代码,我使用“RecyclerView”解决了这个问题。

之后

grid.addView(newMonster);

因此,如果您想使用新的LayoutParams,只需每次使用params创建它:

   import android.support.v7.widget.GridLayout;
    ...
    for (int i = 0; i < 10; i++) {
        View newMonster = View.inflate(this, R.layout.frame, null);
        GridLayout.LayoutParams params = new GridLayout.LayoutParams(GridLayout.spec(GridLayout.UNDEFINED), GridLayout.spec(GridLayout.UNDEFINED, 1, 1f));
        params.height = 200;
        params.width = 0;
        newMonster.setLayoutParams(params);
        grid.addView(newMonster);
    }
导入android.support.v7.widget.GridLayout;
...
对于(int i=0;i<10;i++){
View newMonster=查看。充气(此,R.layout.frame,空);
GridLayout.LayoutParams params=新的GridLayout.LayoutParams(GridLayout.spec(GridLayout.UNDEFINED),GridLayout.spec(GridLayout.UNDEFINED,1,1f));
参数高度=200;
参数宽度=0;
newMonster.setLayoutParams(params);
addView(newMonster);
}

我也有这个问题,我的解决方案是:

GridLayout.Spec Spec=GridLayout.Spec(GridLayout.UNDEFINED,1.0f);
GridLayout.LayoutParams lp=新的GridLayout.LayoutParams(新的MarginLayoutParams(0,ViewGroup.LayoutParams.WRAP_内容));
ItemView ItemView=newChildView(mGridLayout);
lp.columnSpec=规格;
mGridLayout.addView(itemView,lp);

您尝试过哪些代码?你能发一些吗?嗨,谢谢你的回复。我用类似这样的代码编辑,我没有原始代码,因为我已经更改了很多次。我尝试过,但这只适用于API>=21。这就是问题所在。是的,为了清晰起见,我写了所有的参考资料。我试过了,但那只适用于API>=21。这就是问题所在。我使用支持库,它至少在api 19上运行良好。需要时更新答案使用新的LayoutParams
((GridLayout.LayoutParams) button.getLayoutParams()).columnSpec =
    GridLayout.spec(GridLayout.UNDEFINED, 1f); 
 android.support.v7.widget.GridLayout.LayoutParams params=new android.support.v7.widget.GridLayout.LayoutParams();
GridLayout.LayoutParams param = new LayoutParams(GridLayout.spec(GridLayout.UNDEFINED, 1f),  GridLayout.spec(GridLayout.UNDEFINED, 1f));
grid.addView(newMonster);
((android.support.v7.widget.GridLayout.LayoutParams) newMonster.getLayoutParams()).columnSpec = android.support.v7.widget.GridLayout.spec(GridLayout.UNDEFINED, 1, 1f);
   import android.support.v7.widget.GridLayout;
    ...
    for (int i = 0; i < 10; i++) {
        View newMonster = View.inflate(this, R.layout.frame, null);
        GridLayout.LayoutParams params = new GridLayout.LayoutParams(GridLayout.spec(GridLayout.UNDEFINED), GridLayout.spec(GridLayout.UNDEFINED, 1, 1f));
        params.height = 200;
        params.width = 0;
        newMonster.setLayoutParams(params);
        grid.addView(newMonster);
    }