60 votes

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 faire de ce TableLayout un objet défilant afin que tous mes éléments puissent être affichés.

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

 android:isScrollContainer="true"
 

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

106voto

citizen conn Points 8905

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>
 

28voto

Zoku012 Points 11

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>
 

Une fois que vous avez pris assez de place dans ScrollView, l’effet de défilement s’active (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 assez de contenu dans ScrollView.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X