将ImageView放在ConstraintLayout中的按钮顶部

时间:2019-05-02 10:48:12

标签: android android-fragments android-constraintlayout

constraintlayoutImageView放在FrameLayout上时,我遇到Button的问题。

当我尝试在fragment上添加FrameLayout时,作为活动一部分的按钮在片段UI顶部可见。

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


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="button"/>

    <FrameLayout
        android:background="@color/blue"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>

</android.support.constraint.ConstraintLayout>

enter image description here

4 个答案:

答案 0 :(得分:2)

要将按钮和FrameLayout的约束设置为,  按钮:

    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"

FrameLayout:

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button"

答案 1 :(得分:1)

您的代码看起来还不错,但是如果您想让一个视图位于ConstraintLayout中的另一个视图之上,则可以转到“设计”选项卡,然后将较高的视图移至较低的视图上方:

示例:

enter image description here

在图像中,您可以看到按钮位于frameLayout下方,因此他将低于frameLayout(frameLayout将位于按钮上方)


此外,您在按钮上缺少一些限制:

  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="button"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/frameLayout2" />

<FrameLayout
    android:id="@+id/frameLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

如果所有无法帮助您检查this thread的事情,如 @Xavier Rubio Jansana 所说,可能是因为海拔升高。

答案 2 :(得分:1)

  

要将任何视图放在另一个视图之上,您必须像下面这样赋予适当的约束

     

给顶部和底部约束适当,并且当我将所有约束(开始,结束,顶部,底部)都赋予FrameLayout时,它的高度和宽度赋予0dp(您不能将height用作 match_parent 否则将覆盖整个屏幕和重叠按钮。

enter image description here>

<?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="wrap_content"
            android:layout_height="wrap_content"
            android:text="button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

    <FrameLayout
            android:background="@color/colorPrimary"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toTopOf="@+id/button"/>

</android.support.constraint.ConstraintLayout>

答案 3 :(得分:0)

尝试下面的代码

<?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/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:text="button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="638dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:background="@color/appGrey"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button">

    </FrameLayout>

</android.support.constraint.ConstraintLayout>