在RelativeLayout中对齐元素,使其中一个是center_horizo​​ntal

时间:2015-12-03 02:06:24

标签: android android-layout android-relativelayout

这是布局:

enter image description here

正如您可能从上面的布局中看到的那样,外部布局是RelativeLayout,其中所有元素都水平居中。此布局包含另一个布局,该布局也是RelativeLayout分组的几个元素。我希望这个组垂直居中。

现在的问题是关于内部RL2中显示的两个元素。它们基本上是一个按钮和一个进度条(圆形)。我希望按钮水平居中,进度条就在旁边;即progressBar.Left = button.Right + 10(仅供参考)。

我花了最后几个小时试图找出一些东西,但我什么都没有。 (另外,Android上的布局设计还是非常新的。)

如果我能提供更多帮助,请告诉我。

编辑:我尝试了什么 -

  1. 水平线性布局 - >不能将按钮置于线性布局中心并调整进度条的补充边距。
  2. 相对布局 - >无法在这里发生任何事情。

3 个答案:

答案 0 :(得分:3)

我试图复制你想要的布局并想出了这个:

它对我有用

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:padding="10dp"
            >

        <View
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:background="#FF5722"
                />

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

            <View
                    android:id="@+id/view1"
                    android:layout_width="150dp"
                    android:layout_height="50dp"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="50dp"
                    android:background="#0288D1"
                    />

            <View
                    android:id="@+id/centered"
                    android:layout_width="150dp"
                    android:layout_height="50dp"
                    android:layout_below="@id/view1"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="50dp"
                    android:background="#0288D1"
                    />

            <View
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_alignTop="@id/centered"
                    android:layout_marginLeft="10dp"
                    android:layout_toRightOf="@id/centered"
                    android:background="#B58105"
                    />

        </RelativeLayout>
    </RelativeLayout>

looks like this

答案 1 :(得分:0)

将水平LinearLayout中的按钮和进度条换行。如果你开始嵌套,根据我的经验,Relativelayout会变得笨重。

答案 2 :(得分:0)

以下是我对此类要求的处理方法:Layout sample

红色方块是不可见的<Space>元素,其宽度/高度应与进度条相同。这也意味着您需要将每一行包裹在水平LinearLayout中并将所有行包装在一个垂直的行中。

就效率而言,这可能并不理想。我认为一页或两页可以接受。

更新了@ p0lAris评论:

要将元素置于中间位置,您可以使用layout_weight属性(= 100),并为<Space><ProgressBar>元素使用固定宽度。

这意味着按钮尽可能宽。

如果需要在开始/结束时进一步填充,则可以将padding属性添加到包含所有按钮行的父布局中。