只能使用LinearLayout指定一个固定大小的元素,并使用剩余空间的相邻元素吗?

时间:2012-10-04 03:49:02

标签: android android-layout android-linearlayout

我希望有两个相邻的视图,第一个是固定大小,第二个是与第一个相邻的视图,它使用剩余的空间。

我可以使用LinearLayout和权重轻松完成此操作,但我想避免“嵌套权重对性能不利”问题。

是否有其他布局类型可以实现等效?如果是这样,请提供一个例子。

3 个答案:

答案 0 :(得分:3)

RelativeLayout可以做你想要的,例如:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/button1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="Button"
        android:background="#99cc00" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/button1"
        android:text="Button" 
        android:background="#0077cc"/>

</RelativeLayout>

第一个Button宽度为200dp,第二个将伸展以填充父级剩余宽度。

您还可以使用RelativeLayout分割相同大小的两个视图,以避免在某些布局上使用双重权重。

答案 1 :(得分:2)

我相信这可以通过RelativeLayout来完成。例如:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_toRightOf="@id/button">
       ...
    </LinearLayout>

</RelativeLayout>

答案 2 :(得分:-1)

你可以尝试

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

    <Button
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:text="view with fixed size " />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="view with remaining space" />

</LinearLayout>

这是权重在LinearLayout中的工作原理:

At first, it will deduct the fixed dimension, then according to the weight, divide the available space, assign to the views which specify the weight attribute