[英]Android: Dynamically add TextView on a TableLayout with fixed Width
我在android应用程序上遇到问题。 我想在TableLayout中动态创建TableRow。 该行的每一行都需要包含4个TextView。 我想要这样的TextView:
我设法动态创建Tewtview,但是大小不被尊重。 例如,如果我的第一个textview包含大文本,它将覆盖整个屏幕,而不是仅覆盖40%和多行。
我读了很多类似的问题,但是在这里找不到解决方案。 这是我的布局文件:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_marginBottom="30dip"
android:id="@+id/journee_contenu">
<TableRow>
<!-- Column 1 -->
<TextView
android:id="@+id/tbl_txt1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="4"
android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
/>
<!-- Column 2 -->
<TextView
android:id="@+id/tbl_txt2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="bbbbb"
/>
<!-- Column 3 -->
<TextView
android:id="@+id/tbl_txt3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ccccc"
/>
<!-- Column 4 -->
<TextView
android:id="@+id/tbl_txt4"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="4"
android:text="ddddddddddddddddddddddddddddddddddddddddddddddd"
/>
</TableRow>
布局使用第一行创建一个静态选项卡,正如我所希望的那样。 但是动态添加的行的行为方式不同。
我的动态代码:
TableLayout genLayout = (TableLayout) findViewById(R.id.journee_contenu);
for (MatchWrapper match : matchs) {
TableRow tr1 = new TableRow(this);
TextView tvEq1 = new TextView(this);
tvEq1.setText(match.getEquipe1());
TextView tvSc1 = new TextView(this);
tvSc1.setText(match.getScore_equipe1());
TextView tvSc2 = new TextView(this);
tvSc2.setText(match.getScore_equipe2());
TextView tvEq2 = new TextView(this);
tvEq2.setText(match.getEquipe2());
tr1.addView(tvEq1);
tr1.addView(tvSc1);
tr1.addView(tvSc2);
tr1.addView(tvEq2);
genLayout.addView(tr1);
}
我的匹配对象仅包含各种大小的字符串。 非常感谢你的帮助
动态添加的TableRows
不按照您的TableRows
操作的原因是,您没有为TableRow
或TextViews
设置LayoutParams
。
在每个TextView
添加如下所示的LayoutParams
:
tvEq1.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 4 ) );
tvSc1.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1 ) );
tvSc2.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1 ) );
tvEq2.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 4 ) );
LayoutParams
-constructor的最后一个参数是layout_weight
。
您需要在将TextViews
到TableRow
之前添加LayoutParams
。
您可能还需要将LayoutParams
添加到TableRow
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.