我如何将作为CoordinatorLayout的直接子级的组件约束到ConstraintLayout内部的组件?

问题描述 投票:0回答:1

我正在尝试在水平分隔器上对准晶圆厂。同时,我需要fab和CircularRevealLinearLayout成为CoordinatorLayout的直接子代。如果他们不是直系子女,那么晶圆厂将不会进行动画处理。我试图将CoordinatorLayout放在ConstraintLayout内,并将其约束到水平分隔线,但它不起作用。

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
    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:id="@+id/players_container"
    android:layout_width="500dp"
    android:layout_height="600dp">

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coordinator"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.circularreveal.CircularRevealLinearLayout
            android:id="@+id/circular_reveal"
            android:layout_width="300dp"
            android:layout_height="500dp"
            android:elevation="10dp"
            android:visibility="invisible"
            app:layout_constraintTop_toTopOf="@id/edit_btn"
            app:layout_constraintEnd_toEndOf="@id/edit_btn"
            android:background="@color/color_secondary"
            app:layout_behavior="com.google.android.material.transformation.FabTransformationSheetBehavior"/>

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/edit_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_edit_black_24dp"
            app:layout_constraintHorizontal_bias=".95"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/horizontal_divider"
            app:layout_constraintBottom_toBottomOf="@id/horizontal_divider"
            app:layout_constraintEnd_toEndOf="parent"/>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/image_layout"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toTopOf="@id/horizontal_divider"
            app:layout_constraintTop_toTopOf="parent">


            <ImageView
                android:id="@+id/teamBackground"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:src="@drawable/team_golfball"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent" />

            <com.google.android.material.textview.MaterialTextView
                android:id="@+id/team_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintStart_toStartOf="@id/image_layout"
                app:layout_constraintEnd_toEndOf="@id/image_layout"
                app:layout_constraintTop_toTopOf="@id/image_layout"
                app:layout_constraintBottom_toBottomOf="@id/image_layout"
                android:text="Team One"
                style="@style/TextAppearance.MyTheme.Headline7"/>

        </androidx.constraintlayout.widget.ConstraintLayout>


        <View
            android:id="@+id/horizontal_divider"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/black_regular"
            app:layout_constraintTop_toBottomOf="@id/image_layout"
            app:layout_constraintBottom_toTopOf="@id/player_card_recyclerView"/>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/player_card_recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintHeight_percent=".75"
            android:overScrollMode="never"
            android:padding="20dp"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/horizontal_divider"
            tools:itemCount="5"
            tools:listitem="@layout/playercard_draggable" />

    </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</com.google.android.material.card.MaterialCardView>

enter image description here

我想要的是:

enter image description here

android android-constraintlayout android-coordinatorlayout
1个回答
0
投票

请添加-

app:layout_anchor="@id/teamBackground"
app:layout_anchorGravity="bottom|end"

FloatingActionButton中。layout_anchor是该视图应相对于的定位视图。layout_anchorGravity是相对于锚的位置,在其父级边界内的XY轴上。在这里,我要共享图像时使用bottomend

完整代码为-

<com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/edit_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_edit_black_24dp"
            app:layout_constraintHorizontal_bias=".95"
            app:layout_anchor="@id/teamBackground"
            app:layout_anchorGravity="bottom|end"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/horizontal_divider"
            app:layout_constraintBottom_toBottomOf="@id/horizontal_divider"
            app:layout_constraintEnd_toEndOf="parent"/>

请检查layout_heightImageView。应该是0dp,而不是400dp

© www.soinside.com 2019 - 2024. All rights reserved.