¿Cómo hacer un TableLayout desplazable?

3 minutos de lectura

avatar de usuario
iTurki

Mira el código XML aquí por favor:

<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>

mi codigo es mucho mas largo que eso, pero simplemente eliminé las partes innecesarias. el problema es que quiero hacer esto TableLayout desplazable para que se puedan mostrar todas mis cosas.

Traté de poner esta línea en el TableLayout para hacerlo desplazable:

android:isScrollContainer="true"

Pero NO hace el trabajo. Hay alguna manera ?

avatar de usuario
estafa ciudadana

Encierra todo en:

<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>

  • @ciudadano por qué el LinearLayout?

    – Sudhanshu

    14/07/2014 a las 20:12


  • @Sudhanshu, esta publicación es de hace 3 años, pero por lo que puedo recordar, es el envoltorio más básico que establece la orientación en vertical.

    – ciudadano conn

    14 de agosto de 2014 a las 15:22

  • si también necesita desplazamiento horizontal, consulte stackoverflow.com/questions/16623337/…

    – wal

    30 de septiembre de 2015 a las 13:34

  • bueno, en mi caso, no muestra las últimas filas (no se desplace hasta allí)

    – máximo

    24 de junio de 2017 a las 14:51

Técnicamente, no necesita LinearLayout en 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>

Una vez que ocupe suficiente espacio dentro de ScrollView, el efecto de desplazamiento se activará (algo así como un área de texto HTML, una vez que tenga suficientes líneas de texto, el desplazamiento se activa).

También puede anidar ScrollView, pero nuevamente no puede sentir el efecto de desplazamiento hasta que tenga suficiente contenido en ScrollView.

  • Tienes razón, dentro de ConstraintLayout también funciona. Mira mi respuesta a continuación. stackoverflow.com/questions/6513718/…

    – Nakamoto

    4 de julio de 2018 a las 17:22


gracias mbauer se soluciono mi problema lo pongo en orden

  1. TableLayout
  2. TableRow con fin (para el encabezado de las columnas)
  3. Vista de desplazamiento
  4. diseño lineal
  5. x TableRow con fin
  6. fin LinearLayout
  7. final ScrollView
  8. fin TableLayout

  • ¡NO FUNCIONAN! El ancho de columna en “2. Table Row” no era igual al ancho de columna en “5. x TableRow”

    – AnViKo

    17 de julio de 2017 a las 1:11


También funciona dentro del diseño de restricciones. Simplemente agregue los siguientes atributos en su 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">

        . . .

¿Ha sido útil esta solución?