Android – Défilement vertical avec GridLayout

Comment puis-je faire défiler verticalement dans un GridLayout? J’ai déjà essayé d’utiliser un object ScrollView avec GridLayout en tant qu’enfant, avec des enfants RelativeLayout dans GridLayout, mais tous les enfants s’emstacknt et / ou sortent de la mise en page.

Avant d’utiliser GridLayout dans ScrollView:

Avant

Après GridLayout dans ScrollView:

Après

J’ai besoin d’obtenir cet effet avec GridLayout à l’intérieur du ScrollView en tant qu’enfant

Mon fichier de mise en page XML:

       

Je les initialise dans OnCreate avec 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))); 

Avez-vous une idée de la façon dont je peux obtenir que ces éléments s’affichent correctement dans GridLayout ou créent le ScrollView / GridLayout par programmation?

Merci!

J’utilise GridLayouts en configurant les éléments en lignes et en colonnes. Le défilement vertical fonctionne sans aucun problème. Avez-vous essayé quelque chose comme ça?

           

Vous pouvez ajuster la hauteur des lignes en ajoutant des marges pour le haut / bas aux vues de texte selon vos besoins. N’utilisez pas les marges et la gravité pour positionner les enfants. Utilisez uniquement les spécifications de ligne / colonne.

Vous avez probablement besoin d’un GridView bidirectionnel comme ceci:

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

les options horizontales et verticales sont sockets en charge.