Android 以编程方式设置ColumnSpan和ColumnWeight
我一直在尝试将视图添加到gridLayout,虽然我已经这样做了,但它们并没有按照它们应该的方式调整列,我尝试使用同样的atribute来膨胀视图,该atribute在XML中显示得很好,但没有成功 现在,我正试图以编程方式创建视图,但它不起作用,我如何才能实现我想要的呢 相关代码: 这是我的网格布局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
<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);