2012-06-11 21 views
5

Göreli bir düzenine bir görüntü görünümü ekleme konusunda sorun yaşıyorum. RelativeLayout kullanarak dinamik olarak oluşturduğum menü öğelerinin listesine resim eklemek istiyorum. Tüm menü öğemlerim sadece iyi görünüyor ve sırayla ancak her bir öğeye bir resim eklemeyi denediğimde sadece bir ok alıyorum ve dikey olarak ortalanmıyor. Aşağıda benim kodum. Yardımınız çok takdir ediliyor. Benim kodProgramlı RelativeLayout içinde ImageView Hizalayamıyorum

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

     </RelativeLayout> 

Benim XML dosyasında

:

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

Ne olduğunu gösteren bir ekran görüntüsü ekleyebilir misiniz? Açıkladığınızı biliyorum, ancak bir görüntü daha açıklayıcı olabilir. –

cevap

4

bence çizgi altındadır senin sorunun

params.addRule(RelativeLayout.CENTER_VERTICAL); 

EVET, büyük olasılıkla birden okları ekliyoruz Onlar sadece birbirlerinin üzerine tam olarak bir göreli yerleşimin dikey merkezine hizalanmış ALL. Bu komut, düğme öğenize karşı dikey bir merkezleme gerçekleştirmiyor, ancak ana RelativeLayout öğelerini agains.

+0

aslında bu benim kodumda sorun oldu. RelativeLayout.RIGHT_OF kullanarak bitti. Bu benim için çalıştı. – Byron