Intereting Posts
Samsung Galaxy S: Как определить наличие фронтальной камеры? Ошибка приложения при использовании библиотеки поддержки Action Bar v7 для Android 2.3 и выше Android: огромный размер размера apk при использовании браузера кроссворда Android-адаптер ListView с двумя массивами ArrayLists MediaRecorder и UDP (DatagramSocket) в Android Цепочка доверия SSL для Android с промежуточными сертификатами (Apache HttpClient 4.X) Как повысить производительность (первое время загрузки, гладкость прокрутки) GridView, рендеринга многих больших изображений? Не удалось слияние манифеста: uses-sdk: minSdkVersion 1 не может быть меньше версии 7 RecyclerView развернуть / свернуть элементы Есть ли способ настроить gradle для проверки орфографии в файле strings.xml? Android TextView Timer Исключительно простой: переход между действиями (Android) Сообщение об ошибке от проверки лицензии – что это значит? Можно ли использовать приложение HTTP REST API для чата? Android SimpleDateFormat не работает

Программно не удается выровнять 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.