2016-03-19 1 views
0

Je suis en train de mettre en place une mise en page simple grille qui placera une vignette avec un commentaire ci-dessous dans une colonne 2 et une table de rangée infinie (voir photo ci-dessous)En utilisant GridLayout dans android, comment puis-je le configurer pour que chaque élément que j'ajoute soit placé correctement (nombre illimité)?

GridLayout i'm trying to make dynamic

Chaque fois qu'une photo est prise il est ajouté à la disposition de la grille, mais tous les paramètres que j'ai essayés me donnent une erreur après la 3ème image ou ne s'affichent pas correctement.

{CODE}

Cette partie de mon code crée une vignette avec la taille d'une image 400400 vient de prendre, puis est ajouté à la vue GridLayout ainsi que les paramètres de GridLayout.

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //setups 
    setResult(resultCode); 
    GridLayout templayout = (GridLayout) findViewById(R.id.pictureLayout); 

    int col = 2; 
    int row = 2; 
    templayout.setColumnCount(col); 
    templayout.setRowCount(row); 
    String path = tempPicture[4]; 

    ImageView image = new ImageView(this); 
    Bitmap thumb = createThumbnailFromBitmap(path, 400, 400); 
    image.setImageBitmap(thumb); 
    image.setLayoutParams(new android.view.ViewGroup.LayoutParams(400,400)); 


    GridLayout.Spec rowSpan = GridLayout.spec(GridLayout.UNDEFINED, 1); 
    GridLayout.Spec colSpan = GridLayout.spec(GridLayout.UNDEFINED, 2); 
     GridLayout.LayoutParams gridParam = new GridLayout.LayoutParams(rowSpan, colSpan); 
     templayout.addView(image, gridParam); 
     temp = Integer.valueOf(tempPicture[0]); 
     image.setId(temp); 
     image.setTransitionName(path); 
     image.setOnClickListener(ClickPic(image)); 
     addToTempList(tempPicture); 
//This creates a edit text just below the newly created thumbnail 
     createEditableComment(tempPicture[0], templayout); 
     } 

La méthode createComment, juste est ajouté à la vignette ci-dessous après la création (parfois ci-dessous)

void createEditableComment(String picId, GridLayout belowpic){ 
    EditText comment = new EditText(this); 
    comment.setTextSize(20); 
    comment.setId(Integer.valueOf(picId)); 
    comment.setLayoutParams(new android.view.ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    pictureComments.add(comment); 
    belowpic.addView(comment); 

} 

Voici mon xml motif valable. Vive

 <GridLayout 
      android:orientation="vertical" 
      android:id="@+id/pictureLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:columnCount="2"> 
     </GridLayout> 
+0

Vous quesition est pas claire. –

Répondre

1

Essayez cette

<GridView 
android:id="@+id/pictureLayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginTop="20dp" 
android:horizontalSpacing="10dp" 
android:numColumns="auto_fit" 
android:paddingLeft="10dp" 
android:paddingRight="10dp" 
android:verticalSpacing="10dp" /> 
+0

Je vois, c'est la vue parfaite que je recherche cependant, du côté de la programmation, je ne peux pas simplement ajouter un élément à la grille, est-il possible de créer l'ensemble de l'adaptateur et de créer un gridview fixe? – Jube

+0

Vous pouvez ajouter des éléments à gridview. Pour cela, vous devez définir une mise en page xml pour un élément, puis créer une classe d'adaptateur et gonfler cette mise en page xml à votre grille. –

+0

Si vous n'êtes pas sûr de savoir comment utiliser l'adaptateur avec gridview alors laissez-moi savoir que je vais mettre à jour ma réponse. –