在将视图添加到父级时,RelativeLayout不会展开以填充父级

时间:2017-08-02 14:40:15

标签: android relativelayout

我在RelativeLayout内有PercentRelativeLayout,因为下面的代码显示了

<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                               xmlns:app="http://schemas.android.com/apk/res-auto"
                                               android:layout_width="match_parent"
                                               android:layout_height="wrap_content"
                                               android:orientation="vertical"
                                               android:padding="10dp">

    <RelativeLayout
        android:id="@+id/clickBox"
        android:layout_height="match_parent"
        android:background="@color/PaleBlack"
        android:fillViewport="true"
        app:layout_widthPercent="35%">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:scaleX="0.8"
            android:scaleY="0.8"
            android:src="@mipmap/ic_open"/>

    </RelativeLayout>

</android.support.percent.PercentRelativeLayout>

它看起来如下所示,这很好 enter image description here

但是,如果我以编程方式向PercentRelativeLayout添加TextView,RelativeLayout不会展开垂直填充父级PercentRelativeLayout,结果如下所示

enter image description here

如何解决此问题,以便RelativeLayout填充父级的高度?

1 个答案:

答案 0 :(得分:0)

由于不推荐使用PercentRelativeLayout,您可以考虑使用如下布局切换到ConstraintLayout解决方案:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.30" />

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginRight="0dp"
        android:layout_marginTop="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/guideline"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="false"
            android:layout_centerInParent="true"
            android:adjustViewBounds="false"
            app:srcCompat="@mipmap/ic_launcher" />

    </RelativeLayout>

</android.support.constraint.ConstraintLayout>

您可以添加第二条指南,并将正在生成的TextView锚定到指南和父级,就像我对RelativeLayout所做的那样。