У меня есть такой XML-макет с ScrollView и только дочерний ConstraintLayout внутри него. Затем у меня есть несколько дочерних представлений внутри этого ConstraintLayout, обычно с содержимым обертывания. Но я хочу, чтобы одно из этих дочерних представлений Constrain Layout занимало 80% экрана, поэтому я попытался использовать app: layout_constraintHeight_percent, но он прерывает прокрутку. Кажется, что у вида действительно 80% высоты, но тогда оставшееся содержимое занимает оставшиеся 20% и соответствует высоте экрана, а другие виды ниже моего пользовательского вида игнорируются.
<ConstraintLayout>
<ScrollView
android:layout_width = "0dp"
android:layout_height = "0dp"
android:layout_margin = "0dp"
android:fillViewport = "true"
app:layout_constraintTop_toTopOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintBottom_toBottomOf = "parent">
<android.support.constraint.ConstraintLayout
android:id = "@+id/calendarBackgroundLayout"
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
<!-- child views with wrap content -->
<com.mydomain.CustomView
android:id = "@+id/myCustomView"
android:layout_width = "0dp"
android:layout_height = "0dp"
android:layout_marginTop = "8dp"
android:layout_marginStart = "16dp"
android:layout_marginEnd = "16dp"
app:layout_constraintHeight_percent = "0.8"
app:layout_constraintDimensionRatio = "h,5:8"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintTop_toBottomOf = "@id/view_above_this" />
<!-- additional child views with wrap content -->
</ConstraintLayout>
</ScrollView>
</ConstraintLayout>
Если я cmd щелкну по ScrollView, появится платформа Android API 28 и версия байт-кода 52. Странно то, что если я изменил layout_constraintHeight_percent на 0.9, он начал бы прокрутку, но теперь он намного больше, чем 0,9 процента высоты экрана, например 2x screenHeight
Интересно ... Попробуйте подражать тому, что вы хотите, используя вертикальные рекомендации ... Кроме того, вы не разместили достаточно своего макета, но похоже, что у вас есть ConstraintLayout, вложенный внутри другого ConstraintLayout, и этот вложенный CL имеет ширину, установленную на 'match_parent 'что не рекомендуется.
Кроме того, была известная ошибка при вложении ConstraintLayout внутри ScrollView. Это было исправлено, но я не уверен, какую версию библиотеки ConstraintLayout вы используете. Какой номер в вашем файле build.gradle?
Я забыл нажать cmd + K для форматирования исходного кода. У меня есть ConstraintLayout в ScrollView. Внешний ConstraintLayout может быть просто FrameLayout, я думаю
build.gradle ConstraintLayout - 1.1.2
Какую версию ScrollView вы используете?