Прокручиваемый TableLayout & Column Headers - PullRequest
0 голосов
/ 03 августа 2010

Я пытаюсь создать базовую таблицу данных в своем приложении, используя TableLayout. Первая строка содержит заголовки каждого столбца. Каждая строка после этого является данными. Я бы хотел, чтобы данные можно было прокручивать, оставляя видимыми первую строку заголовка (т.е. первая строка не прокручивалась бы вместе с остальными).

Я пробовал что-то вроде следующего (безуспешно):

<TableLayout>
  <TableRow>
    <!-- The headers -->
    <TextView android:text="Header #1"/>
    <TextView android:text="Header #2"/>
    <TextView android:text="Header #3"/>
  </TableRow>

  <ScrollView>
    <!--The rest of the data -->
    <TableRow>
    <TableRow>
    ...
  </ScrollView>
</TableLayout>

Это вызывает сбой программы. Любые другие предложения?

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

вам не нужно иметь tablerow в качестве прямого потомка, он падает, потому что scrollview принимает только одного ребенкапоместите другую таблицу в scrollview и поместите в нее строки.

1 голос
/ 03 августа 2010

Сбой, потому что вы можете иметь TableRow s в качестве прямых потомков в TableLayout.

. Вероятно, вы захотите использовать ListView и заголовок над ним.*

Пример (не полный):

<LinearLayout
  android:orientation="horizontal"
  android:layout_width="fill_parent"
>
   <TextView
      android:id="@+id/header1"
      android:layout_weight="1"
   />
   <TextView
      android:id="@+id/header2"
      android:layout_weight="1"
   />
   <TextView
      android:id="@+id/header3"
      android:layout_weight="1"
   />
</LinearLayout>
<ListView
    android:layout_width="fill_parent"
...
/>

Ключ - layout_weight="1" и android:layout_width="fill_parent", которые предоставят вам 3 вида одинакового размера.Затем вам нужно будет создать Adapter, и в вашем пользовательском макете, предоставленном Adapter, сделать то же самое для дочерних представлений.Возможно, вам придется немного поиграть с отступами / полями, чтобы они точно выровнялись по горизонтали.

0 голосов
/ 23 июня 2012

Использование в RelativeLayout обоих ScrollView и TableLayout, выровненных по верху, и заполнение обоих TableLayouts одной и той же первой строкой может сделать трюк.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <ScrollView
            android:id="@+id/tabscrvie"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
            <TableLayout 
                android:id="@+id/gridview"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                >

        </TableLayout>
    </ScrollView>
    <TableLayout
            android:id="@+id/headergridview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/tabscrvie"
            >
    </TableLayout>
</RelativeLayout>
...