Android 以编程方式设置ColumnSpan和ColumnWeight

Android 以编程方式设置ColumnSpan和ColumnWeight,android,dynamic,grid-layout,android-gridlayout,Android,Dynamic,Grid Layout,Android Gridlayout,我一直在尝试将视图添加到gridLayout,虽然我已经这样做了,但它们并没有按照它们应该的方式调整列,我尝试使用同样的atribute来膨胀视图,该atribute在XML中显示得很好,但没有成功 现在,我正试图以编程方式创建视图,但它不起作用,我如何才能实现我想要的呢 相关代码: 这是我的网格布局 <android.support.v7.widget.GridLayout android:id="@+id/grd_team_a" andr

我一直在尝试将视图添加到gridLayout,虽然我已经这样做了,但它们并没有按照它们应该的方式调整列,我尝试使用同样的atribute来膨胀视图,该atribute在XML中显示得很好,但没有成功

现在,我正试图以编程方式创建视图,但它不起作用,我如何才能实现我想要的呢

相关代码:

这是我的网格布局

<android.support.v7.widget.GridLayout
            android:id="@+id/grd_team_a"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="12dp"
            android:horizontalSpacing="1dp"
            app:columnCount="5"
            app:orientation="horizontal">

            <TextView
                android:id="@+id/txtPlayersNameTi"
                android:text="Jugadores"
                android:textSize="14sp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                app:layout_columnWeight="2"
                app:layout_columnSpan="2"
                android:textStyle="bold"/>
            <TextView
                android:text="Goles"
                android:gravity="center_horizontal"
                android:paddingRight="5dp"
                android:textSize="14sp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                app:layout_columnWeight="1"
                app:layout_columnSpan="1"
                android:textStyle="bold"/>
            <ImageView
                android:src="@drawable/ic_yellow_card_match"
                android:gravity="center_horizontal"
                android:textSize="14sp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                app:layout_columnWeight="1"
                app:layout_columnSpan="1"
                android:textStyle="bold"/>
            <ImageView
                android:src="@drawable/ic_red_card_match"
                android:gravity="center_horizontal"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                app:layout_columnWeight="1"
                app:layout_columnSpan="1"
                android:textStyle="bold"/>
        </android.support.v7.widget.GridLayout>
我得到的是:

编辑:


是的,其他的标题正在散页,大的空白正在显示。

试试这样的东西

对于android:layout\u columnWeight

((GridLayout.LayoutParams) this.getLayoutParams()).columnSpec =
    GridLayout.spec(GridLayout.UNDEFINED, 1f);
签出堆栈答案。

所以, 尝试了很多,并花了很多时间最终完成以下工作:

  GridLayout.LayoutParams doubleLayoutParams = new GridLayout.LayoutParams();
                    doubleLayoutParams.rowSpec = GridLayout.spec(i,1);
                    //  GridLayout.spec(rowNumber,rowSpan);
                    doubleLayoutParams.columnSpec = GridLayout.spec(0, 2f);
                    //  GridLayout.spec(columnNumber,columnSpan);

 TextView newName =  new TextView(myContext);
                    newName.setText(newPlayer.getName().trim() + " " + newPlayer.getLastName().trim());
                    newName.setTextColor(ContextCompat.getColor(myContext, R.color.black_50));
                    newName.setTextSize(12);
                    newName.setEllipsize(TextUtils.TruncateAt.END);
                    newName.setSingleLine();
                    newName.setWidth(0);
                    grdTeamAPlayers.addView(newName, doubleLayoutParams);

@Phillip Pearl对这个答案的评论是:是那个帮助了我的人。
  GridLayout.LayoutParams doubleLayoutParams = new GridLayout.LayoutParams();
                    doubleLayoutParams.rowSpec = GridLayout.spec(i,1);
                    //  GridLayout.spec(rowNumber,rowSpan);
                    doubleLayoutParams.columnSpec = GridLayout.spec(0, 2f);
                    //  GridLayout.spec(columnNumber,columnSpan);

 TextView newName =  new TextView(myContext);
                    newName.setText(newPlayer.getName().trim() + " " + newPlayer.getLastName().trim());
                    newName.setTextColor(ContextCompat.getColor(myContext, R.color.black_50));
                    newName.setTextSize(12);
                    newName.setEllipsize(TextUtils.TruncateAt.END);
                    newName.setSingleLine();
                    newName.setWidth(0);
                    grdTeamAPlayers.addView(newName, doubleLayoutParams);