ConstraintLayout如何散布其余视图

时间:2018-09-20 11:14:03

标签: android android-constraintlayout

这是我第一次与ContraintLayouts合作,我需要一些帮助

我有一个ConstraintLayout和一个TextView,一个LinearLayout和一个RecyclerView,我希望RecyclerView可以展开以填充其父级,而不必使用加权链,因为我在所有视图之间没有比例关系。我该怎么办?

TextView的高度应为wrap_content LinearLayout的高度应为wrap_content 回收站的高度应为“占用其余空间”

我一直在尝试使用链式传播,但似乎没有任何作用

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">

    <android.support.v7.widget.AppCompatTextView
        app:layout_constraintVertical_chainStyle="spread"
        android:id="@+id/close"
        android:layout_width="50dp"
        android:layout_height="20dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="36dp"
        android:textColor="@android:color/white"
        android:textSize="15sp" />


        <LinearLayout
            app:layout_constraintVertical_chainStyle="spread"
            android:layout_marginTop="50dp"
            app:layout_constraintTop_toBottomOf="@id/close"
            android:id="@+id/headline"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:gravity="center"
            android:orientation="vertical">

            <android.support.v7.widget.AppCompatTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/white"
                android:textSize="26sp"
                app:layout_constraintVertical_chainStyle="spread" />

            <android.support.v7.widget.AppCompatTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:textColor="@android:color/white"
                android:textSize="14sp"/>

            <android.support.v7.widget.AppCompatTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="11dp"
                android:textColor="@android:color/white"
                android:textSize="32sp" />

            <android.support.v7.widget.AppCompatTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="20dp"
                android:textColor="@android:color/white"
                android:textSize="14sp"/>

        </LinearLayout>


<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:background="@android:color/white"
    app:layout_constraintTop_toBottomOf="@id/headline"
    app:layout_constraintVertical_chainStyle="spread" />


 </android.support.constraint.ConstraintLayout>

我在寻找什么

编辑:“我的回收者视图”仅在包装中,因此我有空白的声音

[1]

3 个答案:

答案 0 :(得分:2)

将recyclerView的layout_height设为0dp,如下所示:

layout_height = "0dp"

并给出此结果,因为您没有给出底部约束:

app:layout_constraintBottom_toBottomOf="parent"

答案 1 :(得分:1)

解决方案:

在这里,只需复制粘贴并检查:

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.v7.widget.AppCompatTextView
    android:id="@+id/close"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textColor="@android:color/white"
    android:textSize="15sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_chainStyle="spread"/>


<LinearLayout
    android:id="@+id/headline"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:gravity="center"
    android:orientation="vertical"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/close"
    app:layout_constraintVertical_chainStyle="spread">

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:textSize="26sp"
        app:layout_constraintVertical_chainStyle="spread" />

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        android:textColor="@android:color/white"
        android:textSize="14sp" />

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="11dp"
        android:textColor="@android:color/white"
        android:textSize="32sp" />

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="20dp"
        android:textColor="@android:color/white"
        android:textSize="14sp" />

</LinearLayout>


<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:background="@android:color/white"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/headline"
    app:layout_constraintVertical_chainStyle="spread" />

</android.support.constraint.ConstraintLayout>

答案 2 :(得分:1)

尝试一下

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <android.support.v7.widget.AppCompatTextView
        android:id="@+id/close"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="36dp"
        android:textColor="@android:color/white"
        android:textSize="15sp" />


    <LinearLayout
        app:layout_constraintTop_toBottomOf="@id/close"
        android:id="@+id/headline"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:textSize="26sp"
            app:layout_constraintVertical_chainStyle="spread" />

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:textColor="@android:color/white"
            android:textSize="14sp"/>

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="11dp"
            android:textColor="@android:color/white"
            android:textSize="32sp" />

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="20dp"
            android:textColor="@android:color/white"
            android:textSize="14sp"/>

    </LinearLayout>


    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@android:color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/headline"
        app:layout_constraintVertical_chainStyle="spread" />


</android.support.constraint.ConstraintLayout>

输出

enter image description here