在Android中的RelativeLayout中,视图宽度和高度始终为零

时间:2016-08-07 04:27:02

标签: android android-layout android-relativelayout

我正在开发一款Android应用。在我的应用程序中,我正在尝试在图像上设置叠加层。但是相对布局中视图的大小始终为零和高度,即使我将match_parent设置为宽度和高度。请参阅下面的方案。

这是我的XML布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_width="match_parent"
    android:id="@+id/di_card_container"
    android:layout_height="wrap_content">

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

        <ImageView
            android:id="@+id/di_iv_image"
            android:scaleType="centerCrop"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <RelativeLayout
            android:layout_alignParentLeft="true"
            android:layout_alignParentBottom="true"
            android:id="@+id/di_name_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <View
                android:layout_centerInParent="true"
                android:background="@color/blue"
                android:id="@+id/destination_item_overlay"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
            <TextView
                android:padding="10dp"
                android:textSize="15dp"
                android:textColor="@color/white"
                android:id="@+id/di_tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RelativeLayout>
    </RelativeLayout>
</android.support.v7.widget.CardView>

这是结果

enter image description here

如您所见,名称没有蓝色背景,因为相对布局中的视图宽度和高度为零。但如果我明确地设置宽度和高度,就像下面一样,它正在工作。

 <View
                    android:layout_centerInParent="true"
                    android:background="@color/blue"
                    android:id="@+id/destination_item_overlay"
                    android:layout_width="300dp"
                    android:layout_height="30dp"/>

但它与所有设备都不兼容。为什么和高度始终为零?我正在添加该视图,因为我需要以编程方式控制该视图。如何设置该背景视图的宽度和高度以匹配父级?

1 个答案:

答案 0 :(得分:3)

那是因为你有循环依赖。 <RelativeLayout>要求其孩子告诉身高,而<View>告诉其父母要让它与自己一样高。如果我们确定高度,我们可以立即解决问题。

在此尝试:

        <RelativeLayout
            android:layout_alignParentLeft="true"
            android:layout_alignParentBottom="true"
            android:id="@+id/di_name_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <View
                android:layout_centerInParent="true"
                android:background="@color/blue"
                android:id="@+id/destination_item_overlay"
                android:layout_width="match_parent"
                android:layout_alightTop="@id/di_tv_name"
                android:layout_alightBottom="@id/di_tv_name"
                android:layout_height="match_parent"/>
            <TextView
                android:padding="10dp"
                android:textSize="15dp"
                android:textColor="@color/white"
                android:id="@+id/di_tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RelativeLayout>