Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android – Desplazamiento vertical con GridLayout

¿Cómo puedo desplazarme verticalmente dentro de un GridLayout? Ya he intentado usar un ScrollView con el GridLayout como un niño, con los niños de RelativeLayout dentro del GridLayout, pero eso da lugar a todos los niños que se amontonan encima de uno a o que van fuera de la disposición.

Antes de usar GridLayout en ScrollView:

antes de

Después de GridLayout en ScrollView:

Después

Necesito conseguir ese efecto con el GridLayout dentro del ScrollView como un niño

Mi archivo de diseño XML:

<ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:fillViewport="true"> <LinearLayout android:id="@+id/boxContainer" android:layout_width="wrap_content" android:layout_height="wrap_content"> <GridLayout android:layout_width="wrap_content" android:layout_height="315dp"> <!-- RelativeLayout children go here --> </GridLayout> </LinearLayout> </ScrollView> 

Los estoy iniciando en OnCreate con LayoutParams:

 //MiddleLayout GridLayout.LayoutParams middleLayoutLayoutParams = (GridLayout.LayoutParams)middleLayout.getLayoutParams(); middleLayoutLayoutParams.setMargins(2, 273, 400, 0); middleLayoutLayoutParams.setGravity(Gravity.LEFT); middleLayoutLayoutParams.width = 424; middleLayout.setLayoutParams(middleLayoutLayoutParams); middleLayout.setBackgroundDrawable(new ColorDrawable(Color.RED)); middleLayout.bringToFront(); //MiddleLayout1 GridLayout.LayoutParams middleLayoutLayoutParams1 = (GridLayout.LayoutParams)middleLayout1.getLayoutParams(); middleLayoutLayoutParams1.setMargins(431, 273, -2, 0); middleLayout1.getLayoutParams().width = 645; middleLayout1.setLayoutParams(middleLayoutLayoutParams1); middleLayout1.setBackgroundDrawable(new ColorDrawable(Color.GREEN)); //TopLayout GridLayout.LayoutParams topLayoutLayoutParams = (GridLayout.LayoutParams)topLayout.getLayoutParams(); topLayoutLayoutParams.setMargins(2, 0, -2, 676); topLayout.getLayoutParams().width = 631; topLayout.setLayoutParams(topLayoutLayoutParams); topLayout.setBackgroundDrawable(new ColorDrawable(Color.rgb(255, 154, 0))); //TopLayout1 GridLayout.LayoutParams topLayoutLayoutParams1 = (GridLayout.LayoutParams)topLayout1.getLayoutParams(); topLayoutLayoutParams1.setMargins(638, 0, -2, 676); topLayout1.getLayoutParams().width = 440; topLayout1.setLayoutParams(topLayoutLayoutParams1); topLayout1.setBackgroundDrawable(new ColorDrawable(Color.BLUE)); //bottomLayout GridLayout.LayoutParams bottomLayoutLayoutParams = (GridLayout.LayoutParams)bottomLayout.getLayoutParams(); bottomLayoutLayoutParams.setMargins(2, 0, -2, 2); bottomLayout.getLayoutParams().width = 1073; bottomLayout.setLayoutParams(bottomLayoutLayoutParams); bottomLayout.setBackgroundDrawable(new ColorDrawable(Color.rgb(0, 0, 153))); 

¿Alguna idea de cómo puedo obtener estos para mostrar correctamente en un GridLayout, o crear el ScrollView / GridLayout Programatically?

¡Gracias!

2 Solutions collect form web for “Android – Desplazamiento vertical con GridLayout”

He estado utilizando GridLayouts configurando los elementos en filas y columnas. El desplazamiento vertical funciona sin ningún problema. ¿Has intentado algo como ésto?

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" > <GridLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="16" > <TextView android:id="@+id/orange" android:layout_row="0" android:layout_column="0" android:layout_columnSpan="6" android:text="Social" /> <Space android:id="@+id/space_col" android:layout_marginBottom="8dp" android:layout_marginLeft="16dp" android:layout_column="6" android:layout_columnSpan="4" /> <TextView android:id="@+id/blue" android:layout_row="0" android:layout_column="10" android:layout_columnSpan="6" android:text="Utilities" /> <TextView android:id="@+id/red" android:layout_row="1" android:layout_column="0" android:layout_columnSpan="6" android:text="Games" /> <TextView android:id="@+id/green" android:layout_row="1" android:layout_column="6" android:layout_columnSpan="10" android:text="Google" /> </GridLayout> </ScrollView> 

Puede ajustar la altura de la fila añadiendo márgenes para arriba / abajo a las vistas de texto según sea necesario. No utilice los márgenes y la gravedad para colocar a los niños. Sólo utilice la especificación de fila / columna.

Es probable que necesite un GridView de dos vías como este:

https://github.com/jess-anders/two-way-gridview

Ambas opciones horizontales y verticales son apoyadas.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.