1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

RelativeLayout: Schwierigkeit Buttons zu positionieren

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Andro-medanebel, 08.04.2011.

  1. Andro-medanebel, 08.04.2011 #1
    Andro-medanebel

    Andro-medanebel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2010
    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?
     
  2. PeaceI, 08.04.2011 #2
    PeaceI

    PeaceI Android-Hilfe.de Mitglied

    Beiträge:
    65
    Erhaltene Danke:
    12
    Registriert seit:
    26.07.2009
    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:

     
    Andro-medanebel bedankt sich.
  3. Andro-medanebel, 08.04.2011 #3
    Andro-medanebel

    Andro-medanebel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2010
    Habe meinen Code entsprechend ergänzt.
    Hat leider nichts gebracht.
     
  4. Andro-medanebel, 08.04.2011 #4
    Andro-medanebel

    Andro-medanebel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2010
    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);         
    
     
  5. PeaceI, 08.04.2011 #5
    PeaceI

    PeaceI Android-Hilfe.de Mitglied

    Beiträge:
    65
    Erhaltene Danke:
    12
    Registriert seit:
    26.07.2009
    Die ID deines Button0 war 0, nun 3. IDs müssen immer positive Zahlen sein. :winki:

    View | Android Developers
     
    Andro-medanebel bedankt sich.
  6. Andro-medanebel, 08.04.2011 #6
    Andro-medanebel

    Andro-medanebel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2010
    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?
     
  7. PeaceI, 10.04.2011 #7
    PeaceI

    PeaceI Android-Hilfe.de Mitglied

    Beiträge:
    65
    Erhaltene Danke:
    12
    Registriert seit:
    26.07.2009
    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());
     

Diese Seite empfehlen