2012-06-11 10 views
5

Ich habe Probleme beim Hinzufügen einer Bildansicht zu einem relativen Layout. Ich möchte ein Bild zu einer Liste von Menüelementen hinzufügen, die ich dynamisch mit RelativeLayout erstellt habe. Alle meine Menüpunkte erscheinen gut und in Ordnung, aber wenn ich versuche, ein Bild zu jedem der Objekte hinzuzufügen, bekomme ich nur einen Pfeil und es ist nicht vertikal zentriert. Unten ist mein Code. Deine Hilfe ist sehr Willkommen.Programmatisch kann ImageView in RelativeLayout nicht ausgerichtet werden

In meiner XML-Datei

<RelativeLayout 
      android:id="@+id/pMenu" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

     </RelativeLayout> 

In meinem Code:

private void buildMenu(String name, int id) { 

     String[] menuItems = getResources().getStringArray(pMenus[id]); 
     // Get the rel layout from xml 
     RelativeLayout container = (RelativeLayout) findViewById(R.id.pMenu); 

     int imageId=1; 
     Typeface tf = Typeface.createFromAsset(this.getAssets(),"mreavesmodot-reg.otf"); 
     for(String menuItem: menuItems) {   

      // Defining the layout parameters 
      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 


      StyledButton menuImage = new StyledButton(this); 
      menuImage.setBackgroundResource(R.drawable.menu_button); 
      menuImage.setText(menuItem); 
      menuImage.setTypeface(tf); 
      menuImage.setTextSize(19); 
      menuImage.setPadding(20, 0, 0, 0); 
      menuImage.setTextColor(Color.WHITE); 
      menuImage.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); 
      menuImage.setOnClickListener(getOnClickListener(menuImage, name)); 
      menuImage.setId(imageId); 

      if(imageId==1) { 
       lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
      } else { 
       lp.addRule(RelativeLayout.BELOW ,imageId-1); 
      } 
      menuImage.setLayoutParams(lp); 


      ImageView arrow = new ImageView(this); 
      arrow.setImageResource(R.drawable.arrow_menu); 
      arrow.setPadding(0, 0, 15, 0); 
      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 
      params.addRule(RelativeLayout.ALIGN_RIGHT,menuImage.getId()); 
      params.addRule(RelativeLayout.CENTER_VERTICAL); 

      arrow.setLayoutParams(params); 

      container.addView(menuImage); 
      container.addView(arrow); 

      imageId++; 
     } 
    } 
+1

Könnten Sie einen Screenshot hinzufügen, der zeigt, was passiert? Ich weiß, dass du es erklärst, aber ein Bild könnte beschreibender sein. –

Antwort

4

Ich denke, unter der Leitung ist Ihr Problem

params.addRule(RelativeLayout.CENTER_VERTICAL); 

JA, sind Sie höchstwahrscheinlich das Hinzufügen mehrerer Pfeile Sie sind einfach übereinander angeordnet, ALLE sind auf die vertikale Mitte des vollständigen relativen Layouts ausgerichtet. Dieser Befehl führt keine vertikale Zentrierung für den Button-Eintrag durch, sondern wiederum den übergeordneten RelativeLayout.

+0

das war tatsächlich das Problem mit meinem Code. Ich endete mit RelativeLayout.RIGHT_OF. das hat für mich funktioniert. – Byron

Verwandte Themen