Относительная компоновка. Между двумя пунктами

relative layout

Как я могу поместить элемент между двумя другими элементами и выровнять его по центру? (см. красную кнопку на рисунке выше). Как я могу поместить ее между "центральной кнопкой" и "нижней кнопкой"?

Вот мой относительный код макета:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"> 

    <Button 
        android:id="@+id/button_center" 
        android:text="Center" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_centerInParent="true"/>

    <!-- The new button should be between these 2 items -->

    <Button 
        android:id="@+id/button_bottom" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Bottom" 
        android:layout_centerHorizontal="true" 
        android:layout_alignParentBottom="true"/> 

    <Button 
        android:id="@+id/button_top" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Top" 
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true"/> 

    <Button 
        android:id="@+id/button_left" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Left" 
        android:layout_alignParentLeft="true" 
        android:layout_centerVertical="true"/> 

    <Button 
        android:id="@+id/button_rignt" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Right" 
        android:layout_alignParentRight="true" 
        android:layout_centerVertical="true"/> 

    <Button 
        android:id="@+id/button_rel_right" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_toLeftOf="@id/button_right" 
        android:layout_alignTop="@id/button_rignt" 
        android:text="RelRight"/> 

    <Button 
        android:id="@+id/button_rel_left" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@id/button_left" 
        android:layout_alignTop="@id/button_left" 
        android:text="RelLeft"/> 

</RelativeLayout> 

Ответ 1

Вам нужно будет добавить еще один макет, чтобы кнопка была точно посередине. Например, добавьте это в свой макет:

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_above="@+id/button_bottom"
    android:layout_alignLeft="@+id/button_center"
    android:layout_alignRight="@+id/button_center"
    android:layout_below="@id/button_center" >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="new" />
</FrameLayout>

Ответ 2

Я пришел к этому решению:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

  <!-- centered button -->

  <LinearLayout
      android:orientation="vertical" 
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true">

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"/>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

      <Button android:text="CenteredButton"
              android:id="@+id/centered_button"         
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center"/>

    </FrameLayout>  
  </LinearLayout>

</RelativeLayout>

Просто используйте этот код с LinearLayout вместо Button. Я думаю, что это не самый лучший, но он достаточно хорош.