如何在ConstraintLayout中使用两个视图填充屏幕?

时间:2017-08-22 10:33:34

标签: android android-constraintlayout

我试图在屏幕顶部放置一个按钮,在其下面放一个需要填满屏幕的ImageView(所有屏幕尺寸)。 在RelativeLayout中,它似乎很容易做到,但在ConstraintLayout中,我没有成功完成它。

Here is an example of what it's look like in RelativeLayout:

和XML代码:     

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Download Image"
    android:id="@+id/button"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true"
    android:onClick="downloadImage" />

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/imageView"
    android:layout_below="@+id/button"
    android:layout_alignParentStart="true" />

感谢您的帮助, 吉文。

3 个答案:

答案 0 :(得分:3)

也许我没有完全理解你的问题,但这就是我重新制作你给出的图像所做的:

<?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">

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="8dp"
        android:text="Button"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/imageView27"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.59"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button2"
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" />
</android.support.constraint.ConstraintLayout>

结果: enter image description here

答案 1 :(得分:3)

实际上,不推荐使用 fill_parent 属性。所以使用 0dp 来填充ConstraintLayout的可用空间

对于您的问题,请使用以下代码在屏幕顶部显示按钮,在其下方显示 ImageView ,这肯定会填满屏幕 (适用于所有屏幕尺寸)。

<?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">
    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:onClick="downloadImage"
        android:text="Download Image"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button" />
</android.support.constraint.ConstraintLayout>

注意:如果要添加边距/填充,请根据您的要求应用于布局或任何视图。但是当您向ConstraintLayout中的视图添加任何边距时,该视图需要具有该粒子边的约束。

答案 2 :(得分:0)

<Button
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="Download Image"
   android:id="@+id/button"
   android:layout_alignParentTop="true"
   android:layout_alignParentStart="true"
   android:onClick="downloadImage"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toTopOf="parent"/>

<ImageView
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:id="@+id/imageView"
   android:layout_below="@+id/button"
   android:layout_alignParentStart="true"
    app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toBottomOf="@+id/button"
   app:layout_constraintBottom_toBottomOf="parent"/>

按钮需要具有父对象的左,右和上限制。

ImageView需要左侧,右侧,底部约束,父级和顶级约束,按钮底部。