Как сделать несколько просмотров одинаковой ширины? - PullRequest
7 голосов
/ 17 января 2011

Как часть большего пользовательского интерфейса, у меня есть RelativeLayout с тремя видами, которые я хотел бы иметь одинаковую ширину.Три вида «сложены» друг на друга, как это

  1. ImageView
  2. TextView
  3. ImageView

Я пробовал разные вещи, такие как установка View s 'android:layout_width на "wrap_content", установка android:layout_width на "0px" и android:layout_weight на "1", как подсказывает этот ответ и размещение View s в LinearLayout безуспешно.

Как сделать так, чтобы эти три вида были одинаковой ширины?

Соответствующая часть макета xml:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="0px"
    android:layout_weight="1">
        <ImageView
            android:layout_above="@string/window_text"
            android:layout_below="@string/eighteen_id"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:paddingTop="5dp"
            android:layout_alignParentRight="true"
            android:paddingBottom="5dp"
            android:src="@drawable/line1"
            android:id="@string/line_1_id"/>
        <TextView
            android:layout_above="@string/line_2_id"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:gravity="right"
            android:layout_centerVertical="true"
            android:textColor="#000000"
            android:id="@string/window_text"/>
        <ImageView
            android:layout_above="@string/top_row_id"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:paddingTop="5dp"
            android:paddingBottom="10dp"
            android:src="@drawable/line1"
            android:id="@string/line_2_id"/>
</RelativeLayout>

Ответы [ 3 ]

22 голосов
/ 17 января 2011

Это очень просто, см. Ниже.«Магия» проста.Установите для родителя значение wrap_content, а дочерние представления заполняют родителя.Тогда для дочерних представлений меньшего размера всегда устанавливается размер самого большого дочернего представления.

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

    <LinearLayout
        android:id="@+id/bottom_row"
        android:orientation="vertical"
        android:layout_alignParentBottom="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/view1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="123" />

        <Button
            android:id="@+id/view2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="more text" />

         <Button
            android:id="@+id/view3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="even more text" />
    </LinearLayout>
</RelativeLayout>

alt text

1 голос
/ 17 января 2011

Вы пробовали установить android: layout_width = "fill_parent" для двух видов изображений, как у вас это для TextView?Если вы хотите, чтобы три вида были самыми широкими, вы можете обернуть все три в LinearLayout с android: layout_width = "wrap_content".

0 голосов
/ 17 января 2011

Вы можете получить представление изображений, чтобы заполнить родительскую ширину, установив android: scaleType = "" в ImageView, но если текст не заполняет ширину экрана и вы хотите, чтобы ширина изображения точно соответствовала ширине текста, выВам придется делать это программно, получая ширину текстовых представлений, а затем устанавливая ширину просмотра изображений.

...