Android прокручиваемая таблица с фиксированным заголовком, делает фиктивные строки невидимыми

Я знаю, что было несколько сообщений об этом, но я не могу заставить это работать. Я хочу таблицу с заголовком, который остается видимым при прокрутке содержимого таблицы. Мне нравится этот подход: http://www.entreotrascosas.net/creating-dynamic-scrollable-fixed-header-tables-in-android/

Вот мой xml. Я получил два TableLayouts, один для заголовка и один для содержимого. Я заполнил их по одному ряду, layout_height установлен в 0dp,

<TableLayout
    android:id="@+id/headerLayout"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <TableRow
       android:id="@+id/hiddenLongestRow"
       android:layout_width="wrap_content"
       android:layout_height="0dp"  />
</TableLayout>

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/headerLayout"
    android:fadeScrollbars="false" > 
    <TableLayout
        android:id="@+id/contentLayout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TableRow
            android:id="@+id/hiddenHeaderRow"
            android:layout_width="wrap_content"
            android:layout_height="0dp"  />     
    </TableLayout>   
</ScrollView>

Затем я программно заполняю таблицы своими значениями, а строки, указанные в моем xml, фиктивными значениями для заголовка / самой длинной строки. Теперь столбцы обеих таблиц имеют одинаковую ширину. Все идет нормально.

Но теперь мне нужно, чтобы два пустых ряда исчезли. Было сказано, что установка высоты 0dp сделал бы это, но для меня это не так, строки всегда видны.

Я попытался программно установить высоту LayoutParams на 0, но это не помогло. Установка видимости невидимым или унесенным не делает работу. Что еще я могу сделать?

1 ответ

Вы можете попытаться удалить это:

TableRow row = (TableRow)findViewById(R.id.hiddenHeaderRow);
table.removeView(row);
Другие вопросы по тегам