RelativeLayout: Schwierigkeit Buttons zu positionieren

A

Andro-medanebel

Neues Mitglied
0
In meinem RelativeLayout sollen drei Buttons nebeneinander
dargestellt werden.

B1 soll rechts von B0 sein und B2 soll rechts von B1 sein:
B0 B1 B2

Allerdings wird bei meinem Code B0 von B1 überlagert,
statt dass B1 rechts von B0 dargestellt wird:
B1 B2

Das B0 tatsächlich überlaget wird, sehe ich, wenn ich
die Darstellung von B1 und B2 auskommentiere;
dann wird nur B0 dargestellt.

Code:
RelativeLayout xml_layout = (RelativeLayout) findViewById(R.id.custom_layout_id);
         
Button[] b_test  = new Button[3];

b_test[0] = new Button(getContext());
b_test[0].setId(0);
b_test[0].setText("B0");
xml_layout.addView(b_test[0]);
         
b_test[1] = new Button(getContext());
b_test[1].setId(1);
b_test[1].setText("B1");
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(70,70);
lp1.addRule(RelativeLayout.RIGHT_OF, b_test[0].getId());
xml_layout.addView(b_test[1], lp1);
         
b_test[2] = new Button(getContext());
b_test[2].setId(2);
b_test[2].setText("B2");
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(70,70);
lp2.addRule(RelativeLayout.RIGHT_OF, b_test[1].getId());
xml_layout.addView(b_test[2], lp2);
Warum werden B0, B1 und B2 nicht nebeneinander dargestellt
und was muss ich an meinem Code ändern, damit es funktioniert?
 
ich vermute ganz spontan, dass es daran liegt, dass Button0 keinen konkreten Bezug hat von dem er die weiteren abhängig macht

versuchs mal indem du zum Button0 folgendes hinzufügst:

RelativeLayout.LayoutParams lp0 = new RelativeLayout.LayoutParams(70,70);
lp0.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
xml_layout.addView(b_test[0], lp0);
 
  • Danke
Reaktionen: Andro-medanebel
PeaceI schrieb:
RelativeLayout.LayoutParams lp0 = new RelativeLayout.LayoutParams(70,70);
lp0.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
xml_layout.addView(b_test[0], lp0);

Habe meinen Code entsprechend ergänzt.
Hat leider nichts gebracht.
 
Habe meinen Code geändert und greife nicht mehr auf
Arrayindex 0 zu. So funktioniert es.

Ich weiß allerdings nicht warum. Vielleicht hat jemand
eine Erklärung dafür.

Folgender Code zeigt wie gewollt
B0 B1 B2 an:

Code:
RelativeLayout xml_layout = (RelativeLayout) findViewById(R.id.custom_layout_id);

         Button[] b_test  = new Button[4];

         b_test[3] = new Button(getContext());
         b_test[3].setId(3);
         b_test[3].setText("B0");
         RelativeLayout.LayoutParams lp0 = new RelativeLayout.LayoutParams(70,70);
         lp0.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
         xml_layout.addView(b_test[3], lp0);
         
         b_test[1] = new Button(getContext());
         b_test[1].setId(1);
         b_test[1].setText("B1");
         RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(70,70);
         lp1.addRule(RelativeLayout.RIGHT_OF, b_test[3].getId());
         xml_layout.addView(b_test[1], lp1);
         
         b_test[2] = new Button(getContext());
         b_test[2].setId(2);
         b_test[2].setText("B2");
         RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(70,70);
         lp2.addRule(RelativeLayout.RIGHT_OF, b_test[1].getId());
         xml_layout.addView(b_test[2], lp2);
 
Ok, danke, IDs müssen positiv sein.

Habe noch ein Positionierungsproblem:
B1 soll unter B0 sein.
B2 soll rechts von B1 sein.

Das will ich:
B0
B1 B2

Und das bekomme ich:
B0 B2
B1

Mein Code:
Code:
         RelativeLayout xml_layout = (RelativeLayout) findViewById(R.id.custom_layout_id);
         
         Button[] b_test  = new Button[4];

         b_test[1] = new Button(getContext());
         b_test[1].setId(1);
         b_test[1].setText("B0");
         RelativeLayout.LayoutParams lp0 = new RelativeLayout.LayoutParams(70,70);
         lp0.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
         xml_layout.addView(b_test[1], lp0);
         
         b_test[2] = new Button(getContext());
         b_test[2].setId(2);
         b_test[2].setText("B1");
         RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(70,70);
         lp1.addRule(RelativeLayout.BELOW, b_test[1].getId());
         xml_layout.addView(b_test[2], lp1);
         
         b_test[3] = new Button(getContext());
         b_test[3].setId(3);
         b_test[3].setText("B2");
         RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(70,70);
         lp2.addRule(RelativeLayout.RIGHT_OF, b_test[2].getId());
         xml_layout.addView(b_test[3], lp2);
Woran kann das liegen?
 
Hi... müsste glaube ich hinhauen, wenn du für den letzten Button auch noch die Regel hinzufügst unter Button0 zu sein.

Code:
lp2.addRule(RelativeLayout.BELOW, b_test[1].getId());
 

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
313
swa00
swa00
MES
Antworten
10
Aufrufe
787
MES
MES
A
Antworten
3
Aufrufe
674
swa00
swa00
Zurück
Oben Unten