2012-06-11 12 views
5

Mam problem z dodaniem obrazu do układu względnego. Chciałbym dodać obraz do listy elementów menu, które tworzę dynamicznie za pomocą RelativeLayout. Wszystkie moje pozycje menu pokazują się dobrze i są w porządku, ale gdy próbuję dodać obraz do każdego z przedmiotów, otrzymuję tylko jedną strzałkę i nie jest ona wyśrodkowana w pionie. Poniżej znajduje się mój kod. Twoja pomoc jest bardzo ceniona.Programowo nie można wyrównać ImageView w RelativeLayout

W moim pliku XML

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

     </RelativeLayout> 

W moim kodu:

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

Czy możesz dodać zrzut ekranu pokazujący, co się dzieje? Wiem, że wyjaśniasz, ale obraz może być bardziej opisowy. –

Odpowiedz

4

myślę poniżej linia jest Twój problem

params.addRule(RelativeLayout.CENTER_VERTICAL); 

TAK, jesteś najprawdopodobniej dodawania wielu strzałki są one po prostu umieszczone jeden na drugim, wyrównane do pionowego środka pełnego układu względnego. Polecenie to nie wykonuje pionowego centrowania względem elementu przycisku, ale ma macierzysty RelativeLayout.

+0

, który był w rzeczywistości problemem z moim kodem. Skończyło się na używaniu RelativeLayout.RIGHT_OF. to zadziałało dla mnie. – Byron

Powiązane problemy