Используйте RelativeLayout вместо LinearLayout:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_centerInParent="true"/>
</RelativeLayout>
Альтернативный подход заключается в использовании двух вложенных LinearLayout, одного горизонтального и одного вертикального.Например:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/button1"
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"/>
</LinearLayout>
</LinearLayout>
Причина для этого заключается в том, что горизонтальный LinearLayout обращает внимание только на вертикальные значения layout_gravity
, а вертикальный LinearLayout обращает внимание только на горизонтальные layout_gravity
значения.