在主要相对布局内对齐两个相对布局

时间:2014-07-04 10:53:33

标签: android android-layout android-linearlayout relativelayout

    <RelativeLayout
        android:id="@+id/OtherWeatherInfo_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/margin_space"
        android:layout_marginLeft="@dimen/margin_space"
        android:layout_marginRight="@dimen/margin_space" >

        <RelativeLayout
            android:id="@+id/OtherWeatherInfo"
            android:layout_width="@dimen/weather_space"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:gravity="center_vertical"
            android:layout_alignParentLeft="true"
            android:background="@drawable/rect_block" >

            <LinearLayout
                android:id="@+id/humidityLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/humidityTitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/str_humidity"
                    android:textSize="@dimen/weather_size"
                    android:textStyle="bold" >
                </TextView>

                <TextView
                    android:id="@+id/humidityValue"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/str_no_data"
                    android:textColor="@color/color_white"
                    android:textStyle="bold" >
                </TextView>
            </LinearLayout>
           </RelativeLayout>

            <RelativeLayout
                android:id="@+id/OtherWeatherInfo2"
                android:layout_width="@dimen/weather_space"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:gravity="center_vertical"
                android:layout_toRightOf="@+id/OtherWeatherInfo"
                android:background="@drawable/rect_block" >

                <LinearLayout
                    android:id="@+id/visiLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >

                    <TextView
                        android:id="@+id/visiTitle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal"
                        android:text="@string/str_visi"
                        android:textSize="@dimen/weather_size"
                        android:textStyle="bold" />

                    <TextView
                        android:id="@+id/visiValue"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal"
                        android:text="@string/str_no_data"
                        android:textColor="@color/color_white"
                        android:textStyle="bold" />
                </LinearLayout>


        </RelativeLayout>
    </RelativeLayout>

上面的代码由我编写,以实现下图:enter image description here。但我所取得的是这个enter image description here这个enter image description here

我完全不知道我在这里做的错误是什么?我只是使用主要的相对布局 OtherWeatherInfo_main ,其中我嵌入了两个相对布局来表示两个天气属性。 @ dimen / weather_space 是145 dp。我无法在主布局中平等对齐两个相对布局。任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

将两个RelativeLayouts以水平方向包裹在LinearLayout中,然后同时指定RelativeLayouts的相等权重。

一般来说,这样的事情:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="1" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weight="0.5" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weight="0.5" />

</LinearLayout>

答案 1 :(得分:0)

删除此

android:layout_alignParentRight="true"

或者

android:layout_toRightOf="@+id/OtherWeatherInfo"

来自你的第二个布局。

此外,您可以将RelativeLayouts包装到水平LinearLayout并使用android:layout_weight属性

答案 2 :(得分:0)

如果您想使用LinearLayout实现您的设计,请尝试这种方式。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">


    <TextView
        android:id="@+id/txtCityName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Kolkata"/>

    <ImageView
        android:id="@+id/imgWeather"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:layout_marginTop="20dp"/>

    <TextView
        android:id="@+id/txtTemprature"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="28 C"
        android:layout_margin="10dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical"
            android:gravity="center">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Humidity"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="29"/>
            </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical"
            android:layout_marginLeft="20dp"
            android:gravity="center">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Humidity"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="29"/>
        </LinearLayout>
        </LinearLayout>

    <TextView
        android:id="@+id/txtDateTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fri 28"
        android:layout_margin="10dp"/>

</LinearLayout>