Aller au contenu

Placer des views dans un relative layout, mais en java...


sssweat

Recommended Posts

Bonsoir à tous,

J'ai commencé une application avec mes petites bases de Java, j'ai pas mal petits problèmes, la plupart résolus facilement (gros euphémisme^^)... Bref cependant, je n'arrive pas à comprendre comment placer des views dans un relativelayout directement ds le code java... (en xml c'est super simple, malheureusement je dois passer par du java là)

Ce que je voudrais faire est super simple en plus lol... Ça serait juste de mettre 2 textviews ds ce relative layout, un tout a gauche (facile ^^), l'autre tout à droite (évidemment je bloque sur ça).

J'ai essayé avec la gravité, mais ça marche pas. Je suppose qu'il doit y avoir juste une ligne de code à ecrire, mais impossible de mettre la main dessus, et je me perds un peu ds la doc lol...

Merci d'avance à ceux qui pourront m'aider :)

Edit: j'ai (enfin) trouvé, merci addRule lol.

Lien vers le commentaire
Partager sur d’autres sites

TextView et = new TextView(this);
RelativeLayout.LayoutParams et_params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
et_params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, -1);
et.setLayoutParams(et_params);

monRelativeLayout.addView(et);

Voilà. Cela dit, je pense qu'il y a de meilleures façons de faire... En attendant, ça marche^^

Lien vers le commentaire
Partager sur d’autres sites

J'ai suivi un tutorial en fait, et j'arrivais pas à faire le lien entre la classe personnalisée et le xml, d'où ma question.

Mais en fait j'ai compris comment l'afficher via xml, donc double problème résolu, et ça va grandement me faciliter la vie ^^

Lien vers le commentaire
Partager sur d’autres sites

  • 4 months later...

Bonjour,

Je tombe sur quasiment le même problème. je suis obligé de codé mon layout en Java et c'est toujours moins évident qu'en XML.

Voilà ce que j'ai et ce que je veux faire ‒ désolé pour la médiocrité du schéma :

sanstitreckn.jpg

Le premier est ce que j'ai.

  • En gris, un LinearLayout horizontal.
  • En rose, deux éléments peu important. Il s'agit de TextView pour le moment…
  • En orange, un RelativeLayout.
  • En violet, des TextView (ou autres) dont le nombre n'est pas fixe à chaque fois.

J'aimerais que lorsque qu'ils y a trop de TextView violets, ils passent à la ligne. C'est pour cela que j'utilise un ReativeLayout. Cependant, mon code ne fonctionne pas et ils s'alignent tous en haut à gauche du RelativeLayout.

Que faire ?

Extrait de code :

layout_h_b = new LinearLayout(this);
layout_h_b.setOrientation(LinearLayout.HORIZONTAL);
layout_h_b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tv_b = new TextView(this);
tv_b.setText("det");
tv_b.setPadding(5, 5, 5, 5);
tv_b.setBackgroundColor(Color.CYAN);
layout_h_b.addView(tv_B);
tv_b = new TextView(this);
tv_b.setText("getit");
tv_b.setPadding(5, 5, 5, 5);
tv_b.setBackgroundColor(Color.GRAY);
layout_h_b.addView(tv_B);
layout_r = new RelativeLayout(this);
RelativeLayout.LayoutParams layout_r_params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
layout_r.setLayoutParams(layout_r_params);

int[] colors = new int[] { Color.YELLOW , Color.MAGENTA };

for (int i = 8 ; i >= 0 ; i--)
{
	String res = "";
	for (int j = 0 ; j <= i ; j++)
	{
		res = res + i;
	}
		tv_b = new TextView(this);
		tv_b.setText( res );
		tv_b.setPadding(5, 5, 5, 5);
		tv_b.setBackgroundColor( colors[(i%colors.length)] );
	layout_r.addView(tv_b, layout_r_params);
	tv_tmp = tv_b;
}layout_h_b.addView(layout_r);

Lien vers le commentaire
Partager sur d’autres sites

Tes TextView sont mal positionnés parce que tu n'indiques pas comment les positionner au sein du RelativeLayout; c'est le rôle du paramètre layout_r_params que tu passes à la méthode addView, sauf que ce paramètre est toujours le même. Il faut que pour chaque TextView fils, tu instancies un nouveau RelativeLayout.LayoutParams sur lequel tu vas pouvoir indiquer les contraintes de positionnement de ce TextView par rapport aux autres/au layout.

Mais, je ne sais pas si le RelativeLayout peut répondre à ton besoin, notamment le passage à la ligne suivante si tu as plusieurs TextView.

La question à te poser, c'est "comment le ferais-tu en XML ?", avant de pouvoir le transposer en code Java

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...