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 :

Créer des composants graphiques lors d'un clique sur un bouton


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut Créer des composants graphiques lors d'un clique sur un bouton
    Bonjour, je voudrais lorsque je clique sur un bouton que celui-ci ajoute des éléments supplémentaires dans un layout.
    Je n'ai aucune idée de comment réaliser cela, merci pour votre aide.
    Exemple:
    Nom : ex.png
Affichages : 206
Taille : 27,4 Ko

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Salut.
    Tu dois appliquer un événement de type MouseListener au composant censé ajouté des éléments.
    Un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       Button bouton = new Button("Bouton 1");
       add(bouton);
    		bouton.addMouseListener(new MouseAdapter(){
     
    			@Override
    			public void mouseClicked(MouseEvent arg0) {
    				add(new Button("Bouton 2"));
    			}
     
    		});

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Je sais qu'il faut utiliser un onClick() mais je ne sais pas comment construire les éléments suivants, c'est-à-dire, après le toucher d' " ajout + ", construire les éléments graphiques.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par a.collery Voir le message
    Je sais qu'il faut utiliser un onClick()
    Oh attends là!De quelle techno parles-tu?Web ou JSE.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    C'est de l'Android sous Android Studio, avec de l'XML et du java

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Ah ok.je me range alors.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Si j'ai bien compris ce que tu veut tu doit créer les objets dynamiquement.
    Exemple ce code ajoute un textview en dessous du dernier objet créé:
    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
    public class Main{
            TextView textView[] = new TextView[100]; //Nombre max d'objet 
            int NumEdit = 0, IdObject = 200;
            textView[NumEdit] = new TextView(this);
     
            public void onClick(View v) {
                    switch(v.getId()) {
                        //Bouton ajout
                        case R.id.addTextView:
                            addTextView();
                        break;
                    }
            }
     
            public void addTextView(){
                    //Layout:width et Layout:height du textView
                    layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
     
                    //Ajout de paramètre
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_START);
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_END);
     
                    //Place le textView en dessous du dernier composant
                    layoutParams.addRule(RelativeLayout.BELOW, IdObject - 1);
                    textView[NumEdit].setId(IdObject);
                    textView[NumEdit].setText("Text view " + IdObject );
     
                    //Ajoute le textView au Relative Layout
                    Layout.addView(textView[NumEdit], layoutParams);
                    IdObject += 1;
                    NumEdit += 1;
            }
    }

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Merci, je vais tester ce code et comment déclencher le onClick()? Je le déclenche souvent dans un listener.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Admettons que ton bouton se nomme button1:
    tu lance l'écoute du click sur le bouton comme ceci dans on on create
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Button myButton1 = (Button) findviewbyid(R.id.button1);
    myButton1.setonclicklistener(this);
    et dans le on click tu me dans la case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    case R.id.button1:
    addTextView();
    break;
    T'a méthode est bonne aussi c'est juste que je trouve plus lisible de tout réunir dans le onClick()

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Il me dit que la methode onClick n'est jamais utilisée et il y a une erreur avec le setId("Expected ressource of type id") et avec le addView().
    Je ne comprends pas d'où viennent ces erreurs, si vous avez une idée est ce que vous pouvez m'éclaircir svp

    Code Java : 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
     
    public class CreerDevisActivity extends Activity{
     
        TextView textView[] = new TextView[100]; //Nombre max d'objet
        int NumEdit = 0, IdObject = 200;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.creer_devis_display);
     
             textView[NumEdit] = new TextView(this);
     
            ajoutProdPresta = (TextView)findViewById(R.id.tvAjout);
            ajoutProdPresta.setOnClickListener((OnClickListener) this);
         }
     
           public void onClick(View v) {
            switch(v.getId()) {
                case R.id.tvAjout:
                    addTextView();
                    break;
            }
        }
     
         public void addTextView(){
              LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,                   LinearLayout.LayoutParams.WRAP_CONTENT);
     
            textView[NumEdit].setId(IdObject);
            textView[NumEdit].setText("Text view " + IdObject );
     
            Layout.addView(textView[NumEdit], layoutParams);
            IdObject += 1;
            NumEdit += 1;
         }

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Dans t'a classe tu doit implémenter le on clicklistener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class CreerDevisActivity extends Activity implements View.OnClickListener
    De plus tu n'a pas définis le layout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RelativeLayout Layout = (RelativeLayout) findViewById(R.id.RelativeLayout8);
    Ce qui fait qu'il ne sais pas ou ajouter le textview

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Le problème persiste toujours avec le setId():

    Nom : Sans titre.png
Affichages : 180
Taille : 13,0 Ko

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Et bien cette erreur est du au faite la fonction setid(int); veut un id unique
    J'aurai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textView[NumEdit].setId(IdObject+1);
    Pour ne plus avoir cette erreur même si je ne pense pas que cela soit conseiller.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Merci et est-ce que ça serait possible d'ajouter un drawable personnalisé et de l'ajouter autant de fois qu'on clique sur le bouton ajout?

  15. #15
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Je ne pense pas que tu aies besoin de l'ID, vu que tu les crées directement et que tu gardes leur référence en mémoire.
    Si tu souhaites vraiment, utilise plutôt View.generateViewId, ce sera plus propre.

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Qu'entend tu par drawable, une image ?

Discussions similaires

  1. Créer des composants spécifiques en utilisant l'interface graphique native
    Par mgoudet dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 24/01/2011, 11h29
  2. Réponses: 3
    Dernier message: 21/10/2010, 15h58
  3. Réponses: 4
    Dernier message: 19/10/2010, 20h38
  4. action lors d'un clique sur un bouton
    Par nixonne dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 29/06/2006, 01h53

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