#android #android-tablelayout
#Android #android-tablelayout
Вопрос:
Я пытаюсь разместить полосу прокрутки (как вертикальную, так и горизонтальную) для макета таблицы.
Вот мой 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>
Вот как я добавляю строку таблицы:
// 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 раз длиннее
- Горизонтальная полоса прокрутки отсутствует
Может кто-нибудь указать, какая проблема в моем коде? Заранее спасибо
Ответ №1:
После нескольких тестов я обнаружил, что проблема заключалась в
android:shrinkColumns="*"
После удаления этого обе проблемы были исправлены
Надеюсь, это поможет другим людям с такой же проблемой.