У меня есть макет, который имеет древовидную иерархию компонентов.
Основной макет ограничения› дочерний ImageView дочерний вложенный макет ограничения › макет ограничения
Изображение ограничено до 20% сверху и 50% снизу, в то время как вложенный макет ограничен до 30%.
Моя логика заключалась в том, что разница в нижнем ограничении изображения - ограниченное вложенное представление макета, которое
50-30 = 20%
Поэтому, если я помещу свой TextView во вложенный макет с ограничением 20 %, › TextView в макете Constraint NestedScrollView должен помещаться прямо под< /strong> представление изображения макета родительского ограничения.
Но когда я тестировал эту логику на мобильных устройствах с 4, 5 и 6, процентное значение ограничения кажется неправильным, и поверх TextView появляется пустое пространство.
|
|
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_bck"
android:clickable="true"
android:focusable="true">
<View
android:id="@+id/layout_show_all_gradient_bck"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/bck_primary_gradient"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/img_top"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/img_top"
style="@style/CornerShape10"
android:layout_width="0dp"
android:layout_height="0dp"
android:elevation="1dp"
android:scaleType="centerCrop"
app:layout_constraintBottom_toTopOf="@+id/guideline22"
app:layout_constraintEnd_toStartOf="@+id/guideline26"
app:layout_constraintStart_toStartOf="@+id/guideline25"
app:layout_constraintTop_toTopOf="@+id/guideline9"
app:layout_constraintVertical_bias="1.0"
app:srcCompat="@drawable/test_img" />
<androidx.core.widget.NestedScrollView
android:id="@+id/layout_nested"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@drawable/bck_cat_details_view"
android:fillViewport="true"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline24"
app:layout_constraintVertical_bias="0.0">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_details"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/guideline30"
app:layout_constraintStart_toStartOf="@+id/guideline29"
app:layout_constraintTop_toTopOf="@+id/guideline28"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_facts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/txt_facts"
app:layout_constraintStart_toStartOf="@+id/guideline29"
app:layout_constraintTop_toBottomOf="@+id/tv_test_details"
app:textAllCaps="true" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_msg_facts"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/guideline30"
app:layout_constraintStart_toStartOf="@+id/guideline29"
app:layout_constraintTop_toBottomOf="@+id/tv_facts"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TITLE"
app:layout_constraintStart_toStartOf="@+id/guideline29"
app:layout_constraintTop_toBottomOf="@+id/tv_msg_facts"
app:textAllCaps="true" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_msg_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/guideline30"
app:layout_constraintStart_toStartOf="@+id/guideline29"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
/>
<Space
android:id="@+id/space_bottom_extra"
android:layout_width="match_parent"
android:layout_height="80dp"
app:layout_constraintTop_toBottomOf="@+id/tv_msg_title" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.10" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.90" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline31"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.73" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.20" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.20"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.05" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.35" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.1" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.9" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline27"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.10" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline32"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.92" />
</androidx.constraintlayout.widget.ConstraintLayout>