如何将LinearLayout中的对象放在其他对象留下的空间中?

时间:2013-07-12 19:05:34

标签: android xml android-linearlayout

我正在尝试构建一个布局。我使用水平LinearLayout,在其中我有一个imageview,另一个布局和另一个imageview。关键是两个图像视图应位于左侧和右侧,大小为10 dp。中心LinearLayout应拉伸到屏幕但左右不带10dp。

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

        <ImageView
            android:id="@+id/li_iv"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:background="@drawable/pen" />

        <LinearLayout
            android:id="@+id/li_ll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:background="@drawable/back"
            android:orientation="vertical" >

            <TextView
                android:id="@android:id/title"
                android:layout_width="match_parent"
                android:layout_height="28dp"
                android:layout_marginLeft="28dp"
                android:layout_marginRight="28dp"
                android:textSize="22sp"
                android:textStyle="bold" />

            <TextView
                android:id="@android:id/content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:layout_marginLeft="29dp"
                android:layout_marginRight="31dp"
                android:layout_marginTop="5dp"
                android:background="@drawable/back_repeat"
                android:text="aaaaaaaaaa\n"
                android:textSize="16dp" />
        <ImageView
            android:id="@+id/li_rl_center_right"
            android:layout_width="10dp"
            android:layout_alignParentRight="true"
            android:layout_height="match_parent"
            android:layout_gravity="right"
            android:background="@drawable/pen" />
        </LinearLayout>

但这不会发生。右侧imageview位于主LinearLayout的边界之外 - 在其右侧,因此实际上在屏幕之外,因为主LinearLayout宽度填充父级。 我不使用relativeLayout,因为内容没有拉伸到父级的大小,而是扩展到eclipse中图形布局中整个屏幕的大小,而在手机上,imageViews只有父级的默认大小。当在textview内部有更多行时,侧面的图像不会伸展。

我有什么想法可以将这个ImageView放回布局右侧的背面吗?

3 个答案:

答案 0 :(得分:1)

您应该使用相对布局,请尝试以下代码:

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

    <ImageView
        android:id="@+id/li_iv"
        android:layout_width="10dp"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/li_ll"
        android:layout_alignParentLeft="true"
        android:background="@drawable/pen" />

    <LinearLayout
        android:id="@+id/li_ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/li_rl_center_right"
        android:layout_toRightOf="@+id/li_iv"
        android:background="@drawable/back"
        android:orientation="vertical" >

        <TextView
            android:id="@android:id/title"
            android:layout_width="match_parent"
            android:layout_height="28dp"
            android:layout_marginLeft="28dp"
            android:layout_marginRight="28dp"
            android:textSize="22sp"
            android:textStyle="bold" />

        <TextView
            android:id="@android:id/content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_marginLeft="29dp"
            android:layout_marginRight="31dp"
            android:layout_marginTop="5dp"
            android:background="@drawable/back_repeat"
            android:text="aaaaaaaaaa\n"
            android:textSize="16dp" />
    </LinearLayout>

    <ImageView
        android:id="@+id/li_rl_center_right"
        android:layout_width="10dp"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/li_ll"
        android:layout_alignParentRight="true"
        android:layout_gravity="right"
        android:background="@drawable/pen" />

</RelativeLayout>

答案 1 :(得分:0)

您需要将所有内容设置为android:layout_width="match_parent",然后使用weight指定每个屏幕占用的内容。

答案 2 :(得分:0)

我在空间上使用了隐藏按钮。

<LinearLayout
    android:id="@+id/buttons"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="2dp"
    android:layout_marginEnd="5dp"
    android:layout_marginBottom="5dp"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="Text"
        android:textSize="14sp"
        android:visibility="visible" />

    <!-- Non-Visible Button For Space: "Weight" and "Visibility" are important. -->
    <Button
        android:id="@+id/space"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Button"
        android:visibility="invisible" />

    <ImageButton
        android:id="@+id/other"
        style="@style/MiniPlayerButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:padding="10dp"
        app:srcCompat="@drawable/ic_other"
        android:textAllCaps="false"
        android:textSize="14sp"
        android:visibility="visible"
        android:contentDescription="Desc" />
</LinearLayout>