为什么RelativeLayout在其高度设置为WRAP_CONTENT时仍会弄乱其内部布局?

时间:2015-09-16 08:09:01

标签: android android-layout android-relativelayout

我有一个RelativeLayout,用于包装ImageView和2个TextViews。这里的问题是当我将它的高度设置为wrap_content时,其中一个TextViews与另一个TextViews重叠,而它被设置为驻留在它下面但是我将高度设置为特定的dp(如56dp)它很好。请参阅下面的代码。

<?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="wrap_content"
    android:background="?attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/avatar"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_margin="10dp"
        android:scaleType="centerCrop"
        android:src="@drawable/new_profile_avatar"/>

    <com.imnumbers.newpkg.widget.CustomTextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/avatar"
        android:text="Hamed Momeni"/>

    <TextView
        android:id="@+id/number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:layout_toEndOf="@+id/avatar"
        android:layout_toRightOf="@+id/avatar"
        android:text="+989888898885"
        android:textSize="9sp"
        />

</RelativeLayout>

我还提供了截图来说明问题。

它的外观截图:
Wrong

应该的外观截图:
Right

2 个答案:

答案 0 :(得分:1)

只需将RelativeLayout身高更改为"match_parent",即android:layout_height="match_parent"

答案 1 :(得分:1)

android:layout_centerVertical="true"的{​​{1}},name的{​​{1}}和android:layout_below="@+id/name"的{​​{1}}相互依赖,导致错误

建议修复:

  1. 删除number的{​​{1}},您可以为android:layout_height="wrap_content"添加marginTop以将其向下移动一点,例如RelativeLayout;或
  2. android:layout_centerVertical="true"设置固定高度,即name