2
votes

Ajouter une image dynamiquement

J'essaie d'ajouter une image dans LinearLayout (linearForImage) dynamiquement, mais cela ne fonctionne pas.

val image = ImageView(activity)
        image.setLayoutParams(LinearLayout.LayoutParams(80, 60))

        for (i in 1..5){
            linearForImage.removeView(image)
            image.setImageResource(R.drawable.ic_add)
            linearForImage.addView(image)
        }

Je pense que j'aurai 4 ou 5 images dans le LinearLayout , mais aucune image n'est définie.


9 commentaires

pourquoi ne pas créer un fichier xml pour la vue image et l'ajouter à votre mise en page linéaire.?


@AtifAbbAsi Pour un scénario réel, le nombre d'images ne doit pas être fixé. Je viens d'écrire un petit exemple pour cela.


Créez une instance d'image dans la boucle for et supprimez cette boucle removeView de for.


@Chirag fait, mais les images ne s'affichent toujours pas.


Quelle est l'orientation de la disposition linéaire?


@Chirag horizontal


Montrez-moi votre fichier xml.


continuons cette discussion dans le chat


@JohnJoe comme RecycleView, vous pouvez utiliser une seule mise en page (pour différentes valeurs) pour ajouter autant d'images que vous le souhaitez en gonflant cette mise en page dans votre mise en page linéaire.


4 Réponses :


0
votes

Veuillez essayer le code ci-dessous, cela fonctionne pour moi.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">



    <LinearLayout
        android:id="@+id/linearForImage"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></LinearLayout>


</RelativeLayout>

Voici le fichier xml.

for (i in 1..5){
   val imageView = ImageView(this)
   imageView.layoutParams = LinearLayout.LayoutParams(80, 60) // value is in pixels
   imageView.setImageResource(R.mipmap.ic_launcher)
   linearForImage.addView(imageView)
}

entrer l'image description ici


2 commentaires

Comment augmenter la taille de l'image?


LinearLayout.LayoutParams (120, 120)



1
votes

Vous pouvez modifier la mise en page, comme suit ...

Exemple: (En Java)

LinearLayout linearForImage = (LinearLayout)findViewById(R.id.imageLayout);
  for(int i=1;i<6;i++)
    {
      ImageView image = new ImageView(this);
      image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80,60));
      image.setMaxHeight(20);
      image.setMaxWidth(20);

      // Adds the view to the layout
       linearForImage.addView(image);
}


0 commentaires

0
votes

définir dans la vue Image imageView.setImageResource (R.drawable.image)


1 commentaires

Il n'y a pas d'objet imageView dans la question.



1
votes

défini en vue de l'image

ivImage.setImageResource(your drawable image)


0 commentaires