Так недавно в Android Studio 2.2 появился новый ConstraintLayout, который значительно упрощает проектирование, но в отличие от RelativeLayout и Linearlayout, я не могу использовать ScrollView для окружения ConstraintLayout. Это возможно? Если да, то как?

т.е.


        
        
            
            
            
        
        

Ответы (13)

Ошибка с ConstraintLayout внутри ScrollViews была исправлена. Google исправил ошибку в Android Studio 2.2 Preview 2 (constraintlayout 1.0.0-alpha2).

Проверьте эту ссылку на наличие нового обновления (Preview 2): корректно работает внутри ScrollView и RecycleView

Решение 1:

Решением было использовать android: fillViewport = "true" на ScrollView

Решение 2:

Используйте NestedScrollView вместо ScrollView с android: fillViewport = "true"

Редактировать - 16.09.20:

В настоящее время более обычным является использование ScrollView с высотой ConstraintLayout, установленной на wrap_content, он работает очень хорошо, не забывайте о fillViewPort и о том, что Scroll и Nested поддерживают только одного прямого дочернего элемента.

Используйте NestedScrollView с android: fillViewport = "true"



    

        

    


Попробуйте добавить нижнюю часть отступа к вашему макету ограничений, как показано ниже

    

        
        

    

использовать NestedScrollView с окном просмотра, правда работает хорошо для меня



        

        


Установить ScrollView layout_height как wrap_content, тогда он будет работать нормально. Ниже приведены примеры, которые могут кому-то помочь. Я использовал compile 'com.android.support.constraint: constraint-layout: 1.0.2' для макета ограничений.




    

        

            

            

            

            

            

            

            

            

            

            

                

                
            

            

            

            

            

            

            

            

            

        
    



Я потратил 2 дня, пытаясь преобразовать макеты в ConstraintLayout в так называемой «стабильной» версии Android Studio 2.2, и у меня нет ScrollView для работы в дизайнер. Я не собираюсь начинать добавлять ограничения в XML для Views, которые находятся дальше по прокрутке. В конце концов, это должен быть инструмент визуального дизайна.

И количество ошибок рендеринга, переполнения стека и проблем с темами, которые у меня были, привело меня к выводу, что вся реализация ConstraintLayout по-прежнему пронизана ошибками. Если вы не разрабатываете простые макеты, я бы оставил это в покое до тех пор, пока не будет выполнено еще несколько итераций.

Вот 2 дня не вернусь.

У меня был NestedScrollView внутри ConstraintLayout, а этот NestedScrollView имеет один ConstraintLayout.

Если у вас возникла проблема с NestedScrollView,

добавить android: fillViewport = "true" в NestedScrollView, сработало.

ПРОБЛЕМА:

У меня возникла проблема с ConstraintLayout и ScrollView, когда я хотел включить его в другой макет.

РЕШЕНИЕ:

Решением моей проблемы было использование dataBinding.

dataBinding (макет)

Попробуйте добавить android: fillViewport = "true" в ScrollView.

Решение найдено здесь: LinearLayout не расширяется внутри ScrollView

Не забывайте о свойстве tools: context = ". YouClassName" в ScrollView.

Это то, что вызывало сбой моего приложения.

Поскольку фактический ScrollView инкапсулирован в CoordinatorLayout с панелью инструментов ...




    

        

    

    


... Мне пришлось определить android: layout_marginTop = "? Attr / actionBarSize", чтобы прокрутка работала:




    

        

    


Выше также работает с NestedScrollView вместо ScrollView. Определение android: fillViewport = "true" мне не нужно.

Не забывайте, что если вы ограничиваете нижнюю часть некоторого представления до нижней части макета, Scrollview не может прокручиваться.

Любой, кто установил для свойства ниже

ScrollView:: android: fillViewport = "true"

макет ограничения: android: layout_height = "wrap_content"

И он по-прежнему не работает, тогда убедитесь, что вы не установили нижнее ограничение внутреннего прокручиваемого макета (RecycleView) внизу родительского элемента.

Добавьте следующие строки кода:

android:nestedScrollingEnabled="false"
android:layout_height="wrap_content"

Обязательно удалите ограничение ниже:

app:layout_constraintBottom_toBottomOf="parent"

Полный код

   



    

    

2022 WebDevInsider