IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Comment mettre un GridLayout au lieu de LinearLayout


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Par défaut Comment mettre un GridLayout au lieu de LinearLayout
    Bonjour
    j'ai un probleme avec un GridLayout, je dois faire un affichage comme la photo ci_dessous mais j'arrive pas a le faire sous cette format seulement en linear layout
    quelqu'un peut m'aider svp
    Nom : cat.png
Affichages : 246
Taille : 277,9 Ko

    Voila mes codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    package com.example.zied.coivoturageetudiant;
     
     
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.GridLayout;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    import com.example.zied.coivoturageetudiant.Entity.CategorieEntity;
     
    import java.util.ArrayList;
     
    public class MainActivity extends AppCompatActivity {
        ArrayList<CategorieEntity> listCategories;
        LinearLayout layoutBtn;
        ArrayList<LinearLayout> listlayoutBtnText;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            listCategories = new ArrayList<CategorieEntity>();
            CategorieEntity fruit = new CategorieEntity(1, "Fruit", "desc cate 1", "https://openclipart.org/image/2400px/svg_to_png/280304/set-icone-frutta.png");
            CategorieEntity legume = new CategorieEntity(2, "Legumes", "desc 2", "https://icon-icons.com/icons2/53/PNG/256/fruits_vegetables_10762.png");
            listCategories.add(fruit);
            listCategories.add(legume);
            layoutBtn = (LinearLayout) findViewById(R.id.layoutImageButton);
            listlayoutBtnText = new ArrayList<LinearLayout>();
            for (int i = 0; i < listCategories.size(); i++) {
                //imageCategories.setScaleType(ImageView.ScaleType.FIT_XY);
                ImageView imageCategories = new ImageView(getApplicationContext());
     
                GestionImage.loadImageFromUr(getApplicationContext(), listCategories.get(i).getImageCategorie(), imageCategories);
                TextView libelleCategories = new TextView(getApplicationContext());
                libelleCategories.setText(listCategories.get(i).getLibelleCategorie());
                LinearLayout layoutBtnText = new LinearLayout(getApplicationContext());
                layoutBtnText.addView(imageCategories);
                layoutBtnText.addView(libelleCategories);
                listlayoutBtnText.add(layoutBtnText);
                final int finalI = i;
                imageCategories.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        long idCategorie = listCategories.get(finalI).getIdCategorie();
                        Intent intent = new Intent(getApplicationContext(), ListSelonCategorie.class);
                        intent.putExtra("idCategories", idCategorie);
                        startActivity(intent);
                    }
                });
            }
            for (int i = 0; i < listlayoutBtnText.size(); i++) {
                layoutBtn.addView(listlayoutBtnText.get(i));
            }
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.zied.coivoturageetudiant.MainActivity">
     
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
     
     
                <LinearLayout
                    android:id="@+id/layoutImageButton"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"></LinearLayout>
     
     
        </ScrollView>
     
    </LinearLayout>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class GestionImage {
     
        public static  void loadImageFromUr(Context context, String url, ImageView image) {
            Glide.with(context)
                    .load(url)
                    .asBitmap()
                    .into(new BitmapImageViewTarget(image) {
                        @Override
                        protected void setResource(Bitmap resource) {
                            super.setResource(resource);
                        }
                    });
        }
    }
    Nb : j'ai une table catégorie donc je dois recupere les images de la table , en cas d'ajout d'un nouveau catégorie sera automatiquement afficher

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Par défaut
    Tu as essayé le ConstraintLayout?
    C'est beaucoup plus pratique et ça permet de remplacer tous les autres

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Par défaut
    No j'ai pas essayé avec, j'ai trouvé comment faire avec GridView mais probleme c'est au niveau base je veux qu'il soit dynamique

    voila lien :https://stackoverflow.com/questions/...layout-android


    http://abhiandroid.com/ui/gridview

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    Par défaut
    Pour ma part, ca aurait été plus simple avec une RecyclerView et en lui arribuant un GridLayoutManager.

    Avec ces 2 tutos, tu connaitras quasiment tout des recyclerview et comment faire des vues differentes dedans
    https://guides.codepath.com/android/...e-recyclerview
    https://guides.codepath.com/android/...e-RecyclerView

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Par défaut
    C'est que je pensé a faire avec RecylerView comme j'ai mets mes liens dans le commentaire en dessus mais reste meme probleme comment je puisse recupere mes données a partir de la table catégorie et pas enregistrer les images dans dossier icon

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Par défaut
    Comment je peux interger ça ou changer dans le meme contexte que le code de GridViewAdapter, d'une façon dynamique car j'ai une interface ou je peux ajouter un nouveau catégorie donc lorsque j'ajoute un nouveau categorie "fruitsec" automatiquement je trouve dans mon interface1 l'image ajouter a coté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    listCategories = new ArrayList<CategorieEntity>();
            CategorieEntity fruit = new CategorieEntity(1, "Fruit", "desc cate 1", "https://openclipart.org/image/2400px/svg_to_png/280304/set-icone-frutta.png");
            CategorieEntity legume = new CategorieEntity(2, "Legumes", "desc 2", "https://icon-icons.com/icons2/53/PNG/256/fruits_vegetables_10762.png");
            listCategories.add(fruit);
            listCategories.add(legume);
    for (int i = 0; i < listCategories.size(); i++) {
                //imageCategories.setScaleType(ImageView.ScaleType.FIT_XY);
                ImageView imageCategories = new ImageView(getApplicationContext());
     
                GestionImage.loadImageFromUr(getApplicationContext(), listCategories.get(i).getImageCategorie(), imageCategories);
                TextView libelleCategories = new TextView(getApplicationContext());
                libelleCategories.setText(listCategories.get(i).getLibelleCategorie());
                LinearLayout layoutBtnText = new LinearLayout(getApplicationContext());
                layoutBtnText.addView(imageCategories);
                layoutBtnText.addView(libelleCategories);
                listlayoutBtnText.add(layoutBtnText);
                final int finalI = i;
                imageCategories.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        long idCategorie = listCategories.get(finalI).getIdCategorie();
                        Intent intent = new Intent(getApplicationContext(), ListSelonCategorie.class);
                        intent.putExtra("idCategories", idCategorie);
                        startActivity(intent);
                    }
                });
            }
            for (int i = 0; i < listlayoutBtnText.size(); i++) {
                layoutBtn.addView(listlayoutBtnText.get(i));
            }

    GridViewAdapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    public class GridViewAdapter extends RecyclerView.Adapter<GridViewAdapter.ViewHolder> {
     
        private Activity activity;
     
        public GridViewAdapter(Activity activity) {
            this.activity = activity;
        }
     
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
            LayoutInflater inflater = activity.getLayoutInflater();
            View view = inflater.inflate(R.layout.item_grid, viewGroup, false);
     
            return new ViewHolder(view);
        }
     
        @SuppressLint("SetTextI18n")
        @Override
        public void onBindViewHolder(GridViewAdapter.ViewHolder viewHolder, final int position) {
            if (position % 3 == 0) {
                viewHolder.imageView.setImageResource(R.drawable.sample_3);
            } else if (position % 3 == 1) {
                viewHolder.imageView.setImageResource(R.drawable.sample_1);
            } else {
                viewHolder.imageView.setImageResource(R.drawable.sample_2);
            }
            viewHolder.textView.setText("Position: " + (position + 1));
            viewHolder.imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(activity, "You clicked at position: " + position, Toast.LENGTH_SHORT).show();
                }
            });
        }
     
        @Override
        public int getItemCount() {
            return 10;
        }
     
        /**
         * View holder to display each RecylerView item
         */
        protected class ViewHolder extends RecyclerView.ViewHolder {
     
            private TextView textView;
            private ImageView imageView;
     
            public ViewHolder(View view) {
                super(view);
                imageView = (ImageView) view.findViewById(R.id.image);
                textView = (TextView) view.findViewById(R.id.text);
            }

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/07/2015, 17h54
  2. Réponses: 1
    Dernier message: 30/04/2014, 16h07
  3. Comment mettre un LinearLayout dans un autre LinearLayout
    Par KAWTHER RAOUA dans le forum Android
    Réponses: 1
    Dernier message: 26/03/2012, 22h40
  4. Réponses: 3
    Dernier message: 16/05/2007, 19h35
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo