Android: поместите два элемента в центр relativeLayout программно

Я добавляю два элемента в представление для кода. ImageView и спиннинговое колесо. Два элемента показаны, но в одном и том же месте. И я хочу поставить ImageView над другим элементом, в центре экрана.

Код, который добавляет представления:

RelativeLayout container= (RelativeLayout)findViewById(R.id.container);

 RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
 position.addRule(RelativeLayout.CENTER_IN_PARENT);
 imgCenter.setLayoutParams(position);
 container.addView(imgCenter); 

 RelativeLayout.LayoutParams position2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
 position2.addRule(RelativeLayout.CENTER_IN_PARENT);
 position2.addRule(RelativeLayout.BELOW,imgCenter.getId());
 spinner.setLayoutParams(position2);
 container.addView(spinner);

Xml relativelayout:

2 ответа

Благодаря @HareshChhelana я нашел решение. Я изменяю xml следующим образом:

И код:

LinearLayout container= (LinearLayout)findViewById(R.id.container);
 ProgressBar spinner = new ProgressBar(this,null,android.R.attr.progressBarStyleLarge);
 container.addView(imgCenter); 
 container.addView(spinner);


Удалить центр в родительском блоке во втором дочернем элементе

RelativeLayout container= (RelativeLayout)findViewById(R.id.container);

RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
position.addRule(RelativeLayout.CENTER_IN_PARENT);
imgCenter.setLayoutParams(position);
container.addView(imgCenter); 

RelativeLayout.LayoutParams position2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
position2.addRule(RelativeLayout.BELOW,imgCenter.getId());
spinner.setLayoutParams(position2);
container.addView(spinner);

licensed under cc by-sa 3.0 with attribution.