Сохраняйте высоту RelativeLayout как можно меньше, но увеличивайте дочернюю высоту, чтобы заполнить все доступное пространство - PullRequest
4 голосов
/ 25 декабря 2010

My RelativeLayout содержит несколько элементов управления ImageView / TextView различной высоты, например, 20, 70, 35. Элементы управления выровнены в ряд.Я хочу, чтобы они увеличили свою высоту до того же значения максимальной высоты элемента управления, например 70. Проблема заключается в том, что с моим макетом контейнер RelativeLayout и все элементы управления вместо этого расширены до высоты экрана.

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

        <ImageView 
            android:src="@drawable/image1" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            />

        <ImageView 
            android:src="@drawable/image2" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            />

        <ImageView 
            android:src="@drawable/image3" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            />

    </RelativeLayout>

Я могу установить высоту RelativeLayout равной 70, но учтите, что я не знаю размер дочерних элементов управления заранее.

Я также могу достичь желаемого эффекта с помощью LinearLayout, но хочу использовать RelativeLayout.

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >

        <ImageView 
            android:src="@drawable/image1" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            />

        <ImageView 
            android:src="@drawable/image2" 
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            />

        <ImageView 
            android:src="@drawable/image3" 
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            />

    </LinearLayout>

Есть идеи?

1 Ответ

0 голосов
/ 30 декабря 2011

Задумывались ли вы об использовании отступов / полей?

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

    <ImageView 
        android:src="@drawable/image1" 
        android:background="#FFCCDDEE"
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:padding="70dip"
        />
    ....

Этот XML должен создавать изображение размером 140 x 140 (я думаю).Он не будет динамическим, но XML не может делать такие динамические вещи.

Если вы хотите сделать что-то более динамичное, вы можете написать код, который будет увеличивать размер всех ваших элементов, найдитесамый большой, затем установите все ваши объекты на этот размер.

Эта ссылка может быть полезна для этого.

Удачи!

...