Я знаю, что на этот вопрос дан ответ, но, учитывая эффективность разметки представлений / подпредставлений, RelativeLayout стоит дорого (требуется два прохода). Если ваша иерархия представлений сложная, выберите «Относительный макет» или если ваш вид имеет просто простые представления, как показано ниже, перейдите к «Линейный макет / Макет фрейма».
Исходя из моего опыта, когда мое приложение росло, производительность пользовательского интерфейса с относительной компоновкой была в итоге переработана для всех файлов компоновки :( Ниже приведен пример размещения представления (в моем случае ProgressView) точно в центре обзора.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" android:orientation="vertical">
<android.support.v7.widget.AppCompatImageView android:layout_gravity="center" android:layout_width="match_parent"
android:layout_height="0dp" app:srcCompat="@drawable/check" android:scaleType="fitCenter"
android:layout_weight=".7"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp" android:layout_weight=".3">
<ProgressBar android:layout_gravity="center|center_horizontal" android:indeterminateTint="@color/textColorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:indeterminate="true"/>
</FrameLayout>
</LinearLayout>