在相对布局中,如何使最后一个元素适应前面元素中数据的增加



我有一个布局如下。我遇到的问题是,如果friend_name的文本视图很长,它会"推"其余部分,并且它们重叠/覆盖friend_last_msg的最后一个 ViewStub如何使最后一个 ViewStub 也"调整"此"降低其他小部件"?

否则,我怎样才能使最后一个视图存根位于LinearLayout内部并显示在左侧和下方?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parent_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"
  >

    <ImageView
        android:id="@+id/friend_img”
        android:layout_width="@dimen/friend_big”
        android:layout_height="@dimen/friend_big”
        android:layout_alignParentLeft="true"
        android:scaleType="centerCrop"
     />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginLeft="8dp"
        android:layout_toRightOf="@+id/friend_img"
    >
        <TextView
            android:id="@+id/friend_name”
            android:layout_toRightOf="@id/friend_img"
            android:layout_marginBottom="@dimen/layout_small_padding"
            android:includeFontPadding="false"
            android:paddingBottom="0dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="fill_horizontal"
            android:ellipsize="end"
            android:gravity="top"
             />
        <ViewStub
            android:id="@+id/friend_sign”
            android:inflatedId="@+id/friend_sign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout="@layout/friend_sign_layout”/>
        <TextView
            android:id="@+id/friend_contact”
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="1dp"
            android:layout_marginBottom="1dp"
            android:padding="5dp"
            />

    </LinearLayout>

    <ViewStub
        android:id="@+id/friend_last_msg”
        android:inflatedId="@+id/friend_last_msg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout="@layout/friend_last_msg"/>
</RelativeLayout>
首先像

这样输入右逗号,然后根据需要输入android:layout_heightandroid:layout_width值。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
>

<ImageView
    android:id="@+id/friend_img[**"**]
    android:layout_width="@dimen/friend_big[**"**]
android:layout_height="@dimen/friend_big"
android:layout_alignParentLeft="true"
android:scaleType="centerCrop"
/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginLeft="8dp"
    android:layout_toRightOf="@+id/friend_img"
    >
    <TextView
        android:id="@+id/friend_name[**"**]
        android:layout_toRightOf="@id/friend_img"
    android:layout_marginBottom="@dimen/layout_small_padding"
    android:includeFontPadding="false"
    android:paddingBottom="0dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="fill_horizontal"
    android:ellipsize="end"
    android:gravity="top"
    />
    <ViewStub
        android:id="@+id/friend_sign"
        android:inflatedId="@+id/friend_sign"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout="@layout/friend_sign_layout"/>
    <TextView
        android:id="@+id/friend_contact"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
    android:layout_marginBottom="1dp"
    android:padding="5dp"
    />

</LinearLayout>

<ViewStub
    android:id="@+id/friend_last_msg"
    android:inflatedId="@+id/friend_last_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout="@layout/friend_last_msg"/>

你可以这样使用:

将 id -> @+id/container 添加到父级

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_toRightOf="@+id/friend_img"
    android:orientation="vertical">

对于您的存根布局,只需更改为以下内容:

<ViewStub
    android:id="@+id/friend_last_msg"
    android:inflatedId="@+id/friend_last_msg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/container"
    android:layout_toRightOf="@+id/friend_img"
    android:layout_alignParentRight="true"
    android:layout="@layout/friend_last_msg"/>

最新更新