我要找的表有很多行,每行有几列需要自动生成它们的大小,以便它们以显示它们所需的最大宽度显示,其中一个需要扩大/收缩以填补剩余空间。
我试图通过将扩展/收缩柱标记为可收缩和可拉伸来实现此目的。但是这似乎不起作用 - 当表格比可用空间宽时,列不会缩小,而是在右侧切断表格,几列不可见。
关于我可能出错的地方的任何指示?
答案 0 :(得分:2)
最近我不得不面对一个类似的应用程序要求,我终于可以让它工作了。在我的情况下,我需要创建一个TableLayout
并动态添加TableRow
,具体取决于屏幕的宽度。添加到View
的{{1}}是TableRow
s TextView
属性集,所以我不得不玩弄每行显示的项目数,最后可以调整所需的布局。
我会粘贴我的代码并解释我在每一步所做的事情:
layout_weight
答案 1 :(得分:1)
您可以尝试使用单元格的布局权重。如下所示的东西
private static int COLUMN_WEIGHT_1 = 3;
private static int COLUMN_WEIGHT_2 = 1;
private static int COLUMN_WEIGHT_3 = 2;
// this column will stretch to fill the space
private static int COLUMN_WEIGHT_4 = 0;
private void populatePriceTable(){
TableLayout prices = (TableLayout)findViewById(R.id.pricetable);
prices.setStretchAllColumns(true);
prices.bringToFront();
TableRow tr = new TableRow(this);
TextView c1 = new TextView(this);
c1.setText("A cell");
TextView c2 = new TextView(this);
c2.setText("A large cell");
c2.setGravity(Gravity.CENTER_HORIZONTAL);
TextView c3 = new TextView(this);
c3.setText("Another large cell");
TextView c4 = new TextView(this);
c4.setGravity(Gravity.RIGHT);
c4.setText("Filler");
c1.setLayoutParams( new TableRow.LayoutParams( 0 , android.view.ViewGroup.LayoutParams.WRAP_CONTENT, COLUMN_WEIGHT_1) );
c2.setLayoutParams( new TableRow.LayoutParams( 0 , android.view.ViewGroup.LayoutParams.WRAP_CONTENT, COLUMN_WEIGHT_2) );
c3.setLayoutParams( new TableRow.LayoutParams( 0 , android.view.ViewGroup.LayoutParams.WRAP_CONTENT, COLUMN_WEIGHT_3) );
c4.setLayoutParams( new TableRow.LayoutParams( 0 , android.view.ViewGroup.LayoutParams.WRAP_CONTENT, COLUMN_WEIGHT_4) );
tr.addView(c1);
tr.addView(c2);
tr.addView(c3);
tr.addView(c4);
tr.setLayoutParams(new TableRow.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
prices.addView(tr);
}
答案 2 :(得分:0)
您可以拥有 ListView 并拥有单独的xml 布局文件,该文件实际上是表格布局。
所以在listview中你可以处理你想要的行数,表格布局会使它弹性。
答案 3 :(得分:0)
为此行编写单独的XML布局....并根据文本大小使用wrap content / fill parent属性
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"
android:background="#FFFFFF"
android:id="@+id/row_calender">
<TextView
android:id="@+id/tv_ac_sn"
android:layout_width="35dp"
android:layout_height="fill_parent"
android:background="@drawable/border"
android:gravity="center"
android:padding="5dp"
android:textColor="#000000" />
<TextView
android:id="@+id/tv_ac_day"
android:layout_width="85dp"
android:layout_height="fill_parent"
android:background="@drawable/border"
android:gravity="center"
android:padding="5dp"
android:textColor="#000000" />
<TextView
android:id="@+id/tv_ac_date"
android:layout_width="85dp"
android:layout_height="fill_parent"
android:background="@drawable/border"
android:gravity="center"
android:padding="5dp"
android:textColor="#000000" />
<TextView
android:id="@+id/tv_ac_event"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/border"
android:gravity="center"
android:padding="5dp"`
android:textColor="#000000" />
</TableRow>