Android LinearLayout水平或垂直方向的项目填充剩余空间

时间:2014-11-18 08:56:01

标签: android android-layout

我想知道是否有可能在LinearLayout中有两个项目,一个包装其内容,另一个填充剩余的水平空间。我通过指定

在WPF(.NET)中经常这样做
HorizontalAlignment="Stretch".

例如:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="24dp"
    android:background="#0000FF"/>

<ImageView
    android:layout_width="match_parent"
    android:layout_height="24dp"
    android:background="#FF0000"/>

当我这样做时,第二个ImageView填充整个水平空间,正如我预期的那样。我尝试设置wrap_content并使用android:gravity="start"android:gravity="fill_horizontal"之类的重力作为第二个没有用的重力。

注意:我可以通过指定权重属性来实现类似的功能。但这是根据百分比值提供分工。这不是我想要的。

2 个答案:

答案 0 :(得分:5)

您可以使用权重属性本身来执行此操作。请尝试以下方法

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="24dp"
    android:background="#0000FF"/>

<ImageView
    android:layout_width="0dp"
    android:layout_height="24dp"
    android:layout_weight="1"
    android:background="#FF0000"/>

将此包含在水平线性布局中

答案 1 :(得分:0)

您需要使用相对布局。您还需要为第一个图像视图指定宽度,否则它应该包含图像,否则,imageview如何包装内容。

您可以使用以下内容:

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

<ImageView
    android:layout_alignParentLeft="true"
    android:id="@+id/imgFirst"
    android:layout_width="50dp"
    android:layout_height="24dp"
    android:background="#0000FF" />

<ImageView
    android:layout_width="match_parent"
    android:layout_height="24dp"
    android:layout_alignParentRight="@+id/imgFirst"
    android:layout_toRightOf="@+id/imgFirst"
    android:background="#FF0000" />

</RelativeLayout>