API19在RelativeLayout中不显示带有layout_height =“match_parent”的Child,并且在RecyclerView中使用layout_height =“wrap_content”

时间:2017-05-13 08:34:37

标签: android android-layout

我有一个RecyclerView,它必须在ViewHolder中扩展以下布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:minWidth="25px"

    android:minHeight="25px"

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    <android.support.percent.PercentRelativeLayout

        android:id="@+id/imageRelative"

        ....

        ....


    <LinearLayout

        android:id="@+id/premiumBlockerView"

        android:layout_height="match_parent"

        android:layout_width="match_parent"

        android:layout_alignParentRight="true"

        android:layout_alignParentTop="true"

        android:layout_alignParentLeft="true"

        android:alpha="0.5"

        android:background="@color/Black"

        android:layout_alignBottom="@id/linearLayout1" />

</RelativeLayout>

RelativeLayout的内容发生了变化(图像,视频,文字等),所以我无法知道高度(宽度是设备的宽度)。
我必须添加一个视图(我的premiumBlockerView LinearLayout),我将显示为半透明玻璃或不依赖于内容类型。
问题是premiumBlockerView中的height = match_parent不起作用,它总是为零。因此,像其他帖子建议的那样,我添加了layout_alignParent和alignBottom参数,这个工作arround解决方案适用于大于20的API。
现在,应用程序必须适用于API 19,并且此工作arround不起作用。
你有什么建议吗?
感谢!!!

1 个答案:

答案 0 :(得分:0)

我也面临同样的问题。很抱歉,我仍然无法在RelativeLayout中找到完美的解决方案,但您可以使用 ConstraintLayout 或其他布局而不是RelativeLayout来解决此问题。

注意: 如果您设置父RelativeLayout

  

机器人:layout_height = “WRAP_CONTENT” &GT;

和子视图

  

机器人:layout_height = “match_parent”

在RecylerView中。

然后子视图将

  

“WRAP_CONTENT”

而不是match_parent,您可以通过阅读RelativeLayout onMeasure方法的源代码找到原因。