Android - de Défilement vertical avec un GridLayout
Comment puis-je faire défiler verticalement à l'intérieur d'un GridLayout? J'ai déjà essayé d'utiliser un ScrollView avec le GridLayout comme un Enfant, avec RelativeLayout enfants dans le GridLayout, mais que les résultats de tous les enfants empilent les uns sur les autres et ou aller à l'extérieur de la structure.
Avant d'Utiliser le GridLayout dans le ScrollView:
Après GridLayout dans le ScrollView:
J'ai besoin pour arriver à cet effet avec le GridLayout à l'intérieur de la ScrollView comme un Enfant
Mon XML fichier de mise en page:
<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>
Je suis en cours d'initialisation 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)));
Une idée de comment je peux obtenir ces pour afficher correctement dans un GridLayout, ou la création de la ScrollView/GridLayout par programmation?
Merci!
OriginalL'auteur Groot | 2014-08-17
Vous devez vous connecter pour publier un commentaire.
J'ai été en utilisant GridLayouts par la mise en place des éléments dans les lignes et les colonnes. Le défilement vertical fonctionne sans aucun problème. Avez-vous essayé quelque chose comme ça?
Vous pouvez ajuster la hauteur de ligne en ajoutant les marges haut/bas pour le texte en tant que de besoin. N'utilisez pas de marges et de la gravité de la position de l'enfant. Seulement utiliser la ligne/colonne spec.
J'ai besoin d'aide, comment puis-je régler l'espace entre les colonnes et les lignes/points de vue?
Vous pouvez utiliser l'espace. J'ai ajouté un espace d'élément de réponse. J'ai été en utilisant les marges pour ajouter un espacement entre les lignes. C'est le standard android:layout_marginTop etc.
OriginalL'auteur user3460486
Vous avez probablement besoin d'une à deux voies GridView comme ceci:
https://github.com/jess-anders/two-way-gridview
à la fois horizontale et à la verticale) sont pris en charge.
OriginalL'auteur Jim