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:
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:
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")); } });
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.
C'est de l'Android sous Android Studio, avec de l'XML et du java
Ah ok.je me range alors.
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; } }
Merci, je vais tester ce code et comment déclencher le onClick()? Je le déclenche souvent dans un listener.
Admettons que ton bouton se nomme button1:
tu lance l'écoute du click sur le bouton comme ceci dans on on create
et dans le on click tu me dans la case :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Button myButton1 = (Button) findviewbyid(R.id.button1); myButton1.setonclicklistener(this);
T'a méthode est bonne aussi c'est juste que je trouve plus lisible de tout réunir dans le onClick()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 case R.id.button1: addTextView(); break;
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; }
Dans t'a classe tu doit implémenter le on clicklistener
De plus tu n'a pas définis le layout
Code : Sélectionner tout - Visualiser dans une fenêtre à part public class CreerDevisActivity extends Activity implements View.OnClickListener
Ce qui fait qu'il ne sais pas ou ajouter le textview
Code : Sélectionner tout - Visualiser dans une fenêtre à part RelativeLayout Layout = (RelativeLayout) findViewById(R.id.RelativeLayout8);
Le problème persiste toujours avec le setId():
Et bien cette erreur est du au faite la fonction setid(int); veut un id unique
J'aurai mis :
Pour ne plus avoir cette erreur même si je ne pense pas que cela soit conseiller.
Code : Sélectionner tout - Visualiser dans une fenêtre à part textView[NumEdit].setId(IdObject+1);
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?
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.
Qu'entend tu par drawable, une image ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager