Я знаю, что здесь и в Google есть масса похожих вопросов, но я просто не мог найти правильный способ сделать это.
Допустим, я хочу отобразить TableView с заголовками. Таблица будет содержать динамические c строк и столбцов (т.е. недоступны во время сборки):
<TableLayout
android:id="@+id/mytable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="*" />
Однако я хочу, чтобы она была прокручиваемой вниз, так как в ней может быть больше строк, чем дисплей может обработать один раз, поэтому я завернул его в Scrollview и поместил другое tableview впереди, чтобы содержать мои заголовки:
<TableLayout
android:id="@+id/mytableheader" ... />
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView_table"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical">
<TableLayout
android:id="@+id/mytable"... />
</ScrollView>
Таким образом, я могу прокрутить его сейчас, но иногда столбцы шире экрана, поэтому я также хотел иметь горизонтальную прокрутку option:
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:scrollbars="none"
<TableLayout
android:id="@+id/mytableheader" ... />
<ScrollView
android:id="@+id/scrollView_table" ...>
<TableLayout
android:id="@+id/mytable" ... />
</ScrollView>
</HorizontalScrollView>
Теперь он может хорошо прокручиваться в обоих направлениях, а заголовки замораживаются при прокрутке вниз, но я не могу добиться одной вещи.
Я хочу иметь полосу прокрутки ScrollView будет отображаться всегда при прокрутке вниз. Если столбцы шире, чем дисплей, и появляется HorizontalScrollView, полоса прокрутки ScrollView видна только в том случае, если я панорамирую по горизонтали до конца содержимого.
Я, очевидно, могу изменить два ScrollView, тогда вертикальная полоса прокрутки всегда видны при прокрутке вниз, но в этом случае я потерял функции таблицы заголовков: замораживание и горизонтальная прокрутка:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:scrollbars="none"
<TableLayout
android:id="@+id/mytableheader" ... />
<HorizontalScrollView
android:id="@+id/scrollView_table" ...>
<TableLayout
android:id="@+id/mytable" ... />
</HorizontalScrollView>
</ScrollView>
Поэтому, идя еще дальше, я могу поместить таблицу заголовков перед ScrollView, тогда она получит снова завис, но он по-прежнему не прокручивается по горизонтали.
Теперь я могу обернуть его в другой HorizontalScrollView, но тогда я столкнусь с проблемой синхронизации между строками заголовка и данных, которые нужно перемещать вместе при прокрутке. Хотя есть некоторые решения для этой проблемы syn c, но мне любопытно, есть ли что-то более простое для всей этой ситуации?
Мне просто нужна таблица Dynami c, которая может прокручивать как X, так и Y направлением, сохраняя верхнюю строку заголовка постоянно видимой и показывая вертикальную полосу прокрутки при спуске, чтобы пользователь имел представление о том, сколько контента все еще доступно.