Так недавно в Android Studio 2.2 появился новый ConstraintLayout, который значительно упрощает проектирование, но, в отличие от RelativeLayout
и Linearlayout
, я не могу использовать a ScrollView
для окружения ConstraintLayot
. Это возможно? Если да, то как?
т.е.
<ScrollView 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"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp">
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp">
<!-- Have whatever children you want inside -->
</android.support.constraint.ConstraintLayout>
</ScrollView>
layout_height="wrap_content"
, приложение показывает пустой экран, но если я используюlayout_height="match_parent"
, приложение не прокручивается.Ответы:
Ошибка с ConstraintLayout внутри ScrollViews была исправлена. Google исправил ошибку в Android Studio 2.2 Preview 2 (constraintlayout 1.0.0-alpha2).
Проверьте эту ссылку на наличие нового обновления (предварительная версия 2): работает правильно внутри ScrollView и RecycleView
Решение 1:
Решение 2:
источник
Попробуйте добавить
android:fillViewport="true"
в ScrollView.Нашел решение здесь: LinearLayout не расширяется внутри ScrollView
источник
использование
NestedScrollView
с окном просмотра true работает хорошо для меняисточник
Установите
ScrollView
layout_height
какwrap_content
тогда он будет работать нормально. Ниже приведены примеры, которые могут кому-то помочь. Я использовалcompile 'com.android.support.constraint:constraint-layout:1.0.2'
для компоновки ограничений.источник
Не забывайте, что если вы ограничиваете нижнюю часть некоторого представления до низа макета, Scrollview не может прокручиваться.
источник
Попробуйте добавить немного отступов к макету ограничений, как показано ниже
источник
Я потратил 2 дня на попытки конвертировать макеты
ConstraintLayout
в так называемую «стабильную» версию Android Studio 2.2, и мне не пришлосьScrollView
работать в дизайнере. Я не собираюсь начинать добавлять ограничения в XML дляViews
это будет дальше. В конце концов, это должен быть инструмент визуального дизайна.И количество ошибок рендеринга, переполнения стека и проблем с темами, которые у меня были, привело меня к выводу, что вся
ConstraintLayout
реализация по-прежнему полна ошибок. Если вы не разрабатываете простые макеты, я бы оставил это в покое, пока не будет хотя бы еще несколько итераций.Это 2 дня я не вернусь.
источник
Поскольку фактические
ScrollView
воплощен вCoordinatorLayout
сToolbar
...... Мне нужно было определить,
android:layout_marginTop="?attr/actionBarSize"
чтобы прокрутка работала:Выше также работает с
NestedScrollView
вместоScrollView
. Определениеandroid:fillViewport="true"
не требуется для меня.источник
Любой, кто установил свойство ниже
ScrollView ::
android:fillViewport="true"
макет ограничения:
android:layout_height="wrap_content"
И он все еще не работает, тогда убедитесь, что вы не установили нижнее ограничение внутреннего прокручиваемого макета (RecycleView) внизу родительского элемента.
Добавьте следующие строки кода:
Обязательно удалите ограничение ниже:
Полный код
источник
Не забывайте о
tools:context=".YouClassName"
собственности вScrollView
.Это то, что привело к сбою моего приложения.
источник