我有一个TableLayout只有XML中的一行(即标题行)。我动态添加的其他所有行。 XML PART:
<TableLayout android:id="@+id/list_table"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:stretchColumns="1" android:background="#808000" **android:scrollbars="vertical">**
<TableRow android:layout_margin="1dp" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/list_head_Row">
<TextView android:layout_width="wrap_content"
android:text="Col1" android:layout_height="wrap_content"></TextView>
<TextView android:gravity="center" android:layout_width="wrap_content" android:text="Col2" android:layout_height="wrap_content"></TextView>
<TextView android:layout_width="wrap_content" android:text="Col3" android:layout_height="wrap_content"></TextView>
</TableRow>
</TableLayout>
在Activity类中,我添加了TableRows:
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
// Add 3 TextViews
// Add Row to table
t1.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
有了这么多,所有行都会被添加到表中并填满屏幕。我想设置是,只查看4-5行,其他人可以滚动。为此,我添加了:
int tableHgt = t1.getChildAt(0).getHeight() + (rowHgt *40);
t1.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, tableHgt));
除了在xml中添加的标题行之外,我根本看不到任何行。如何才能使其高度只能看到5行,而其他所有可以滚动?还添加了TableLayout
android:scrollbars="vertical"
。
我哪里错了?
非常感谢任何帮助。
由于
答案 0 :(得分:2)
为什么不使用ListView?
但是好的......回到你的问题 将TableLayout放在ScrollView中并在ScrollView中设置高度
编辑:代码
activity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scrolltest);
TableLayout t1 = (TableLayout) findViewById(R.id.list_table);
for (int i = 0; i < 10; i++) {
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
t1.addView(tr, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
TextView tv = new TextView(this);
tr.addView(tv, new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
tv.setText(Integer.toString(i));
tv = new TextView(this);
tr.addView(tv, new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
tv.setText("Row number");
tv = new TextView(this);
tr.addView(tv, new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
tv.setText(Integer.toString(i));
}
}
scrolltest.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="100dp"
android:id="@+id/list_scroll">
<TableLayout android:id="@+id/list_table"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:stretchColumns="1">
<TableRow android:layout_margin="1dp" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/list_head_Row"
android:background="#808000">
<TextView android:layout_width="wrap_content" android:text="Col1"
android:layout_height="wrap_content" />
<TextView android:gravity="center" android:layout_width="wrap_content"
android:text="Col2" android:layout_height="wrap_content" />
<TextView android:layout_width="wrap_content" android:text="Col3"
android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
</ScrollView>