ConstraintLayout внутри ScrollView, constraintHeight_percent прерывает прокрутку

У меня есть такой 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>

Какую версию ScrollView вы используете?

cincy_anddeveloper 18.12.2018 18:29

Если я cmd щелкну по ScrollView, появится платформа Android API 28 и версия байт-кода 52. Странно то, что если я изменил layout_constraintHeight_percent на 0.9, он начал бы прокрутку, но теперь он намного больше, чем 0,9 процента высоты экрана, например 2x screenHeight

Michał Ziobro 18.12.2018 18:41

Интересно ... Попробуйте подражать тому, что вы хотите, используя вертикальные рекомендации ... Кроме того, вы не разместили достаточно своего макета, но похоже, что у вас есть ConstraintLayout, вложенный внутри другого ConstraintLayout, и этот вложенный CL имеет ширину, установленную на 'match_parent 'что не рекомендуется.

cincy_anddeveloper 18.12.2018 19:22

Кроме того, была известная ошибка при вложении ConstraintLayout внутри ScrollView. Это было исправлено, но я не уверен, какую версию библиотеки ConstraintLayout вы используете. Какой номер в вашем файле build.gradle?

cincy_anddeveloper 18.12.2018 19:25

Я забыл нажать cmd + K для форматирования исходного кода. У меня есть ConstraintLayout в ScrollView. Внешний ConstraintLayout может быть просто FrameLayout, я думаю

Michał Ziobro 18.12.2018 22:08

build.gradle ConstraintLayout - 1.1.2

Michał Ziobro 18.12.2018 22:09
2
6
685
0

Другие вопросы по теме