TableLayout 的滚动条
Scroll bar for TableLayout
我正在尝试为 table 布局放置滚动条(垂直和水平)。
这是我的 xml:
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40"
android:fillViewport="true">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<TableLayout
android:id="@+id/prize_table"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="10dp"
android:shrinkColumns="*"
android:stretchColumns="*" />
</HorizontalScrollView>
</ScrollView>
这就是我添加 table 行的方式:
// header
row = new TableRow(MainActivity.this);
row.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(R.string.prize_no);
row.addView(tv);
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(R.string.prize_name);
row.addView(tv);
layout.addView(row);
for (Prize prize : prizes) {
row = new TableRow(MainActivity.this);
row.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(prize.getPrizeID());
row.addView(tv);
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(prize.getPrizeName());
row.addView(tv);
layout.addView(row);
}
但是我对这些代码有些问题
- 垂直滚动条与我的内容不匹配,假设我有10行,但滚动条会长10倍
- 缺少水平滚动条
有人能指出我的代码有什么问题吗?提前致谢
经过多次测试,发现问题出在
android:shrinkColumns="*"
去掉那个之后,两个问题都解决了
希望这可以帮助其他有同样问题的人。
我正在尝试为 table 布局放置滚动条(垂直和水平)。
这是我的 xml:
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40"
android:fillViewport="true">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<TableLayout
android:id="@+id/prize_table"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="10dp"
android:shrinkColumns="*"
android:stretchColumns="*" />
</HorizontalScrollView>
</ScrollView>
这就是我添加 table 行的方式:
// header
row = new TableRow(MainActivity.this);
row.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(R.string.prize_no);
row.addView(tv);
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(R.string.prize_name);
row.addView(tv);
layout.addView(row);
for (Prize prize : prizes) {
row = new TableRow(MainActivity.this);
row.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(prize.getPrizeID());
row.addView(tv);
tv = new TextView(MainActivity.this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextSize(18);
tv.setPadding(0, 5, 0, 5);
tv.setText(prize.getPrizeName());
row.addView(tv);
layout.addView(row);
}
但是我对这些代码有些问题
- 垂直滚动条与我的内容不匹配,假设我有10行,但滚动条会长10倍
- 缺少水平滚动条
有人能指出我的代码有什么问题吗?提前致谢
经过多次测试,发现问题出在
android:shrinkColumns="*"
去掉那个之后,两个问题都解决了
希望这可以帮助其他有同样问题的人。