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

Posted

技术标签:

【中文标题】如何使多个视图具有相同的宽度?【英文标题】:How to make multiple Views the same Width? 【发布时间】:2011-06-10 03:16:04 【问题描述】:

作为更大 UI 的一部分,我有一个 RelativeLayout,其中包含三个我希望具有相同宽度的视图。三个视图像这样“堆叠”在彼此之上

    ImageView TextView ImageView

我尝试了各种方法,例如将Views' android:layout_width 设置为“wrap_content”,将android:layout_width 设置为“0px”,将android:layout_weight 设置为“1”,如this answer 所建议的那样,以及将Views 放在LinearLayout 中没有成功。

如何让这三个视图的宽度相同?

布局xml的相关部分:

<RelativeLayout
    android:layout_
    android:layout_
    android:layout_weight="1">
        <ImageView
            android:layout_above="@string/window_text"
            android:layout_below="@string/eighteen_id"
            android:layout_
            android:layout_
            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_
            android:layout_
            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_
            android:layout_
            android:layout_alignParentRight="true"
            android:paddingTop="5dp"
            android:paddingBottom="10dp"
            android:src="@drawable/line1"
            android:id="@string/line_2_id"/>
</RelativeLayout>

【问题讨论】:

您显示的是RelativeLayout,而不是LinearLayout? 我在这个RelativeLayout 下还有其他几个Views,它们使用相对定位。 【参考方案1】:

这很简单,见下文。 “魔法”很简单。将父视图设置为 wrap_content,将子视图设置为填充父视图。然后,较小的子视图总是被设置为最大子视图的大小。

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

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

        <Button
            android:id="@+id/view1"
            android:layout_
            android:layout_
            android:text="123" />

        <Button
            android:id="@+id/view2"
            android:layout_
            android:layout_
            android:text="more text" />

         <Button
            android:id="@+id/view3"
            android:layout_
            android:layout_
            android:text="even more text" />
    </LinearLayout>
</RelativeLayout>

【讨论】:

【参考方案2】:

您是否尝试为两个图像视图设置 android:layout_,就像为 TextView 设置一样?如果您希望三个视图的宽度是最宽的,您可以将所有三个视图包装在具有 android:layout_ 的 LinearLayout 中。

【讨论】:

我尝试了您的两个建议,但都没有奏效。文字溢出左右两边的图片。【参考方案3】:

您可以通过在 ImageView 中设置 android:scaleType="" 来让图像视图填充父宽度,但是如果文本没有填充屏幕宽度并且您希望图像宽度与文本宽度完全匹配,您'必须以编程方式获取文本视图宽度,然后将图像视图的宽度设置为该宽度。

【讨论】:

我遇到了相反的情况。我希望我的 TextView 的宽度不会超出我的 ImageView 的宽度。当设置为 wrap_content 时,TextViews 比 ImageView 宽得多。所以我不得不在代码中设置它们的宽度。一个 layout_matchWidth 项目会很好地放在一个 RelativeLayout 中。

以上是关于如何使多个视图具有相同的宽度?的主要内容,如果未能解决你的问题,请参考以下文章

无论在android中垂直对齐的字数如何,如何为多个文本视图设置相等的宽度?

如何在FFMpeg中连接两个或多个具有相同宽度和不同高度的视频并保持相同的纵横比?

使连续的按钮在颤动中具有相同的宽度

如何使多个 html 表具有相同的列宽

如何使 dijit.form.Select 与具有相同值的多个项目一起使用?

如何在滚动视图中进行多个表格视图