web-dev-qa-db-fra.com

Comment faire un TableLayout à défilement?

Regardez le code XML ici s'il vous plaît:

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

Mon code est beaucoup plus long que cela, mais je viens d'éliminer les parties inutiles . Le problème est que je veux que cette TableLayout soit défilable afin que toutes mes informations puissent être affichées.

J'ai essayé de mettre cette ligne dans la TableLayout afin de la faire défiler:

Android:isScrollContainer="true"

Mais cela ne fait PAS le travail. Y a-t-il un moyen?

50
iTurki

Enveloppez le tout dans:

<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>
96
citizen conn

Techniquement, vous n'avez pas besoin de LinearLayout dans 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>

Lorsque vous aurez assez de place dans ScrollView, l’effet de défilement sera activé (un peu comme un HTML TextArea, une fois que vous avez suffisamment de lignes de texte, le défilement s’active.)

Vous pouvez également imbriquer ScrollView, mais encore une fois, vous ne pouvez pas ressentir l'effet de défilement tant que vous n'avez pas suffisamment de contenu dans ScrollView.

17
Artorias2718

Cela fonctionne aussi à l'intérieur de Constraint Layout. Ajoutez simplement les attributs suivants sur votre 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
Nakamoto

merci mbauer il a résolu mon problème je mets en ordre

  1. TableLayout
  2. TableRow avec end (pour l'en-tête des colonnes)
  3. ScrollView
  4. LinearLayout
  5. x TableRow avec fin
  6. fin de LinearLayout
  7. fin ScrollView
  8. fin de TableLayout
1
Phil