Android:如何使LinearLayout中的所有元素大小相同?


80

我想创建一个对话框来显示视频标题和标签。在文本下方,我想添加按钮“查看”,“编辑”和“删除”,并使这些元素的大小相同。有谁知道如何修改.xml布局文件以使LinearView中的元素大小相同?

当前的布局文件如下所示:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:orientation="vertical">

    <LinearLayout 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:orientation="vertical">

          <TextView 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content" 
              android:id="@+id/txtTitle" android:text="[Title]" >
          </TextView>

          <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" 
              android:id="@+id/txtTags"            
              android:text="[Tags]" >
          </TextView>

    </LinearLayout>

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

        <Button 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:id="@+id/btnPlay" 
           android:text="View">
        </Button>

        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/btnEdit" 
            android:text="Edit">
        </Button>

        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/btnDelete" 
            android:text="Delete">
        </Button>

    </LinearLayout>

</LinearLayout>

如果有人可以通过修改粘贴的文件内容来显示解决方案,我将不胜感激。

谢谢!

Answers:


172

使用android:layout_width="0px"android:layout_weight="1"在三个Buttons上。也就是说,按钮占用的像素不得超过0个,但是其中三个按钮应在它们之间分配任何多余的空间。那应该给您您想要的视觉效果。


4
如果您确实想要,则可以将TableLayout与android:stretchColumns =“ 0,1,2”一起使用。
杰里米·洛根

太棒了...所以这意味着,如果我们将宽度设置为0px,则权重将覆盖设置?为什么会这样呢?
2013年

如果您的按钮位于中,则此方法不起作用GridLayout。在这种情况下,它们实际上变得0px很宽。也许GridLayout不接受layout_weight
Zelphir Kaltstahl 2015年

@Zelphir:GridLayout绝对不使用layout_weight。只能由LinearLayout,或者可能由的某些子类使用LinearLayout
CommonsWare,2015年

33

另一种方法是制作android:layout_width="fill_parent"android:layout_weight="1"这也可以正常工作!!!


18
您对这个答案感到非常兴奋。:-)热爱热情!
Oh Danny Boy

CommonsWare的解决方案对我不起作用,但是做到了!:)我使用了“ match_parent”,因为我听说您应该比“ fill_parent”更喜欢它,但是两者都可以。
codepleb 2014年

这些元素的LinearLayout父元素还必须具有layout_width =“ match_parent”
Patapoom

19

LinearLayout与所需的weightSum一起使用,并创建具有相同layout_weight的元素。这是一个例子...

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="5">

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_share_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_search_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_event_note_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_brush_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_menu_white_36dp"/>
</LinearLayout>

因此,所有元素的权重总和为5。这是屏幕截图...

在此处输入图片说明

请注意,使用的是Google Material Design图标。希望这会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.