Android-Constraint layout - как выровнять вид по центру над краем другого вида?
Я хочу построить макет следующим образом:
Внутри компоновки ограничений есть представление изображения, которое действует как баннер, затем есть карта, центр которой выровнен с нижним краем баннера, а затем есть другое представление изображения, центр которого выровнен с верхним краем карты.
Проблема, с которой я сталкиваюсь, заключается в том, что второй вид изображения (зеленый) при выравнивании с картой идет в фоновом режиме вместо того, чтобы оставаться в передний план.
Вот xml,
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax"
android:paddingBottom="@dimen/padding_10">
<ImageView
android:id="@+id/imageView_jobBackdrop_jobDetails"
android:layout_width="match_parent"
android:layout_height="175dp"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:src="@drawable/backdrop_job_details"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_collapseMode="parallax"/>
<ImageView
android:id="@+id/imageView_companyLogo_jobDetails"
android:layout_width="75dp"
android:layout_height="75dp"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax"
app:layout_constraintBottom_toTopOf="@+id/cardView_jobHeader_jobDetails"
app:layout_constraintEnd_toEndOf="@id/cardView_jobHeader_jobDetails"
app:layout_constraintStart_toStartOf="@id/cardView_jobHeader_jobDetails"
app:layout_constraintTop_toTopOf="@+id/cardView_jobHeader_jobDetails" />
<android.support.v7.widget.CardView
android:id="@+id/cardView_jobHeader_jobDetails"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
app:layout_constraintBottom_toBottomOf="@+id/imageView_jobBackdrop_jobDetails"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView_jobBackdrop_jobDetails"
app:layout_constraintVertical_bias="0.5">
<android.support.constraint.ConstraintLayout
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView_jobTitle_jobDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:gravity="center"
android:text="Fresher Software Developer Job. Urgent Openning. Angular Js, HTML, JavaScript, CSS"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>
</android.support.constraint.ConstraintLayout>
2 ответов:
Попробуйте вот что:
<?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" android:orientation="vertical" android:padding="20dp"> <android.support.v7.widget.CardView android:id="@+id/card_1" android:layout_width="0dp" android:layout_height="200dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <android.support.v7.widget.CardView android:id="@+id/card_2" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="0dp" app:cardBackgroundColor="#69F" app:layout_constraintBottom_toBottomOf="@+id/card_1" app:layout_constraintLeft_toLeftOf="@+id/card_1" app:layout_constraintRight_toRightOf="@+id/card_1" app:layout_constraintTop_toBottomOf="@+id/card_1" /> </android.support.constraint.ConstraintLayout>Пояснение: - это работает из-за этих четырех строк
Следующие строки устанавливают синий CardView по центру нижнего края Белого CardView.
<!-- top constraint is set to bottom of White CardView --> app:layout_constraintTop_toBottomOf="@+id/card_1" <!-- bottom constraint is set to bottom of White CardView --> app:layout_constraintBottom_toBottomOf="@+id/card_1"Следующие строки устанавливают синий CardView по центру горизонтально
<!-- left constraint is set to left of White CardView --> app:layout_constraintLeft_toLeftOf="@+id/card_1" <!-- right constraint is set to right of White CardView --> app:layout_constraintRight_toRightOf="@+id/card_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" android:fitsSystemWindows="true" app:layout_collapseMode="parallax"> <ImageView android:id="@+id/imageView_jobBackdrop_jobDetails" android:layout_width="match_parent" android:layout_height="175dp" android:fitsSystemWindows="true" android:scaleType="centerCrop" android:background="@android:color/white" app:layout_collapseMode="parallax" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageView android:id="@+id/imageView2" android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:background="@android:color/black" app:layout_constraintBottom_toBottomOf="@+id/imageView_jobBackdrop_jobDetails" app:layout_constraintEnd_toEndOf="@+id/imageView_jobBackdrop_jobDetails" app:layout_constraintStart_toStartOf="@+id/imageView_jobBackdrop_jobDetails" app:layout_constraintTop_toBottomOf="@+id/imageView_jobBackdrop_jobDetails" /> <ImageView android:id="@+id/imageView3" android:layout_width="75dp" android:layout_height="75dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:background="@android:color/darker_gray" app:layout_constraintBottom_toTopOf="@+id/imageView2" app:layout_constraintEnd_toEndOf="@+id/imageView2" app:layout_constraintStart_toStartOf="@+id/imageView2" app:layout_constraintTop_toTopOf="@+id/imageView2" /> </android.support.constraint.ConstraintLayout>



Comments