Как сделать прокручиваемый TableLayout? - PullRequest
51 голосов
/ 29 июня 2011

Посмотрите на XML-код здесь, пожалуйста:

<TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <!-- Some stuff goes here -->

    />
    </TableRow>

    <TableRow
    android:id="@+id/tableRow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <!-- Some stuff goes here -->

    />
    </TableRow>

    <TableRow
    android:id="@+id/tableRow3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <!-- Some stuff goes here -->

    />
    </TableRow>


</TableLayout>

Мой код намного длиннее , но я просто удалил ненужные части.Проблема в том, что я хочу сделать это TableLayout прокручиваемым, чтобы можно было показать все мои вещи.

Я попытался поместить эту строку в TableLayout, чтобы сделать ее прокручиваемой:

android:isScrollContainer="true"

Но это НЕ делает работу. Есть ли способ?

Ответы [ 4 ]

99 голосов
/ 29 июня 2011

Заключите все в:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none"
    android:layout_weight="1">
    <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical">

    ...

</ScrollView>
19 голосов
/ 27 августа 2014

Технически вам не нужен LinearLayout в ScrollView:

<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none"
android:layout_weight="1">

    <TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    android:isScrollContainer="true">

    <TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

        <--!Everything Else You Already Have-->

    </TableRow>
 </TableLayout>
</ScrollView>

Как только вы займете достаточно места в ScrollView, активируется эффект прокрутки (что-то вроде HTML TextArea, когда у вас будет достаточно строк текста, прокрутка активируется).

Вы также можете вкладывать ScrollView, но, опять же, вы не можете почувствовать эффект прокрутки, пока у вас не будет достаточно содержимого в ScrollView.

1 голос
/ 04 июля 2018

Это также работает внутри схемы ограничений. Просто добавьте следующие атрибуты в свой TabLayout.

<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:isScrollContainer="true">

        . . .
1 голос
/ 26 декабря 2014

спасибо mbauer это решило мою проблему я размещаю заказ

  1. TableLayout
  2. TableRow с концом (для заголовка столбцов)
  3. ScrollView
  4. LinearLayout
  5. x TableRow с окончанием
  6. end LinearLayout
  7. конец ScrollView
  8. end TableLayout
...