Android 相对布局,将某物定位在 2 个视图的中间

Android relative layout, positioning something in the middle of 2 views

我在相对布局中有 2 个 ImageButtons 和一个 Seerkbar,我试图定位它们以便:

1) 第一个imageButton在左边,它的左边和parent的左边对齐。

2) 第二个imageButton在右边,它在右边,父元素的右边对齐。

3) Seekbar在中间,它覆盖了所有剩余的space。

它应该看起来像这样:

我试过这个:

    <RelativeLayout android:layout_width="match_parent"
                android:layout_height="wrap_content">

    <ImageButton android:id="@+id/image_1"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentLeft="true"
                 android:src="@drawable/image_1"/>

    <SeekBar android:id="@+id/seek_bar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_toRightOf="@id/image_1"
             android:layout_toLeftOf="@id/image_2"
             android:max="95"/>

    <ImageButton android:id="@+id/image_2"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentRight="true"
                 android:src="@drawable/image_2"/>

</RelativeLayout>

这在我的 intellij 设备预览上运行良好,但由于以下行而无法编译:

          android:layout_toLeftOf="@id/image_2"

因为我在声明它之前使用 id/image_2。有解决办法吗?

TRY THIS....


<RelativeLayout android:layout_width="match_parent"
                    android:layout_height="wrap_content">

        <ImageButton android:id="@+id/image_1"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignParentLeft="true"
                     android:src="@drawable/image_1"/>

        <SeekBar android:id="@+id/seek_bar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_toRightOf="@+id/image_1"
                 android:layout_toLeftOf="@+id/image_2"
                 />

        <ImageButton android:id="@+id/image_2"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignParentRight="true"
                     android:src="@drawable/image_2"/>

    </RelativeLayout>

我想你忘了在 id 之前加上 + 符号,像这样:

android:layout_toRightOf="@+id/image_1"
android:layout_toLeftOf="@+id/image_2"

我不建议在 RelativeLayout 中引用两个组件,例如 toRightOftoLeftOf。始终尝试将每个引用到一个。在您的情况下,您还可以使用 LinearLayout 和权重来为 chils 进行均匀分布,如下所示

<LinearLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<ImageButton
    android:id="@+id/image_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/ic_launcher" />

<SeekBar
    android:id="@+id/seek_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:max="95" />

<ImageButton
    android:id="@+id/image_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:src="@drawable/ic_launcher" />

</LinearLayout>

这会帮助你处理不同的分辨率,试一试 我把 imageview 而不是 seekbar 哈哈

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100"
android:gravity="center"
android:background="#FFF"
android:layout_margin="1dp">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="40"
    android:background="#aef"
    android:layout_margin="4dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView"
        android:background="#984"/>
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="100dip"
    android:layout_weight="20"
    android:background="#fec"
    android:layout_margin="4dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView2"
        android:background="#594"/>
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="40"
    android:background="#9ef"
    android:layout_margin="4dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/imageView3"
        android:background="#994"/>
</LinearLayout>
</LinearLayout>