Программно не удается выровнять ImageView в RelativeLayout

У меня возникли проблемы с добавлением изображения в относительный макет. Я хотел бы добавить изображение в список элементов меню, которые я динамически создаю с помощью RelativeLayout. Все мои пункты меню отображаются только в порядке и порядке, но когда я пытаюсь добавить изображение к каждому из элементов, я получаю только одну стрелку и не центрируется по вертикали. Ниже мой код. Ваша помощь очень ценится.

В моем XML-файле

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

В моем коде:

 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++; } } 

Я думаю, что строка ниже – ваша проблема

 params.addRule(RelativeLayout.CENTER_VERTICAL); 

ДА, вы, скорее всего, добавляете несколько стрелок, они просто одно друг на друга ВСЕ, выровненные по вертикали центра полной относительной компоновки. Эта команда не выполняет вертикальное центрирование против вашего элемента кнопки, но снова возвращает родительский RelativeLayout.