Tengo un TableLayout que se llena dinámicamente con muchas filas de datos. Contiene más datos de los que puede contener la pantalla, por lo que necesito que sea desplazable.
Mi problema es que cuando coloco el TableLayout dentro de un ScrollView, parece cortar muchas filas desde la parte superior del TableLayout.
Como referencia, el código completo está aquí (la pregunta es desordenar para que quepa todo) http://pastebin.com/w7Fi3Bzz
Vea a continuación el código relacionado con el problema que estoy teniendo
Aquí está el XML sin el ScrollView:
<TableLayout
android:orientation="vertical"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:id="@+id/tbl_statistics"
android:stretchColumns="*"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
</TableLayout>
Y cómo se ve:
Y aquí está el mismo XML con un ScrollView adjunto:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
>
<TableLayout
android:orientation="vertical"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:id="@+id/tbl_statistics"
android:stretchColumns="*"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
</TableLayout>
</ScrollView>
Y así es como se ve la tabla, puede ver que la parte superior de la tabla se truncó (se rellena con los mismos datos exactos):
Encontré un problema similar aquí LinearLayout no se expande dentro de una Vista de desplazamiento, pero las respuestas no me ayudaron.
Respuestas
2 para la respuesta № 1En tus diseño actual:
retirar
android:layout_gravity="center"
desde elTableLayout
elemento.Añadir
android:layout_weight="1"
alScrollView
elemento.Limpia y reconstruye tu proyecto.
Además, el fillViewport
atributo solo funciona en ScrollView
s.
2 para la respuesta № 2
Resolví el mismo problema solo insertando TableLayout en LinearLayout, que es solo hijo de ScrollView. Probé todas las demás variantes sin éxito (fillViewport
para ScrollView
, android:layout_weight="1"
para TableLayout
)
solía TableLayout
para insertar dinámicamente Views
lo
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:id="@+id/activity_displayFields_tableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp" />
</LinearLayout>
</ScrollView>