如何使多个视图具有相同的宽度?

时间:2011-01-16 21:16:08

标签: android layout view size width

作为更大的用户界面的一部分,我有一个RelativeLayout有三个视图,我希望宽度相同。这三个视图像这样“堆叠”在一起。

  1. ImageView
  2. TextView
  3. ImageView
  4. 我尝试了各种各样的事情,例如将View s'android:layout_width设置为“wrap_content”,将android:layout_width设置为“0px”,将android:layout_weight设置为“1”正如this answer所建议的那样,将View置于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 个答案:

答案 0 :(得分:21)

这很简单,见下文。 “魔术”很简单。将父级设置为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 :(得分:1)

您是否尝试为两个图像视图设置android:layout_width =“fill_parent”,就像您为TextView设置它一样?如果你希望三个视图是最宽的宽度,你可以将所有三个视图包含在一个具有android:layout_width =“wrap_content”的LinearLayout中。

答案 2 :(得分:0)

您可以通过在ImageView中设置android:scaleType =“”来获取图像视图以填充父宽度,但如果文本没有填满屏幕宽度,并且您希望图像宽度与文本宽度完全匹配,则必须通过获取文本视图宽度然后将imageview的宽度设置为编程来以编程方式执行此操作。