2014-09-02 6 views
1

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

Код, добавьте просмотров:

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:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.app.exemple.LoadingActivity" 
android:id="@+id/container" > 

+0

ли вы имеете в виду один должен быть наложен поверх другого или что они должны быть изложены в виде вертикальной линии ? –

+0

Попробуйте удалить эту строку: position2.addRule (RelativeLayout.CENTER_IN_PARENT); –

+1

, если вы используете LinearLayout с гравитационным «центром» в качестве родительского макета вместо RelativeLayout, тогда вы не обязаны давать какие-либо правила и т. Д., Сразу добавляете свое изображение и прядильщик последовательно. –

ответ

0

Благодаря @HareshChhelana I нашел решение. изменить XML следующим образом:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.app.exemple.LoadingActivity" 
android:id="@+id/container" 
android:orientation="vertical" 
android:gravity="center" > 

И код:

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

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

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); 
Смежные вопросы