У меня есть единственный CardView внутри ScrollView, который работает безупречно, если высота CardView достаточно мала, чтобы прокрутка не требовалась. Однако, если CardView требуется прокрутка (для отображения большего изображения), нижняя часть CardView обрезается. Что я делаю неправильно?
Вот часть моего файла layout.xml:
<?xml version = "1.0" encoding = "utf-8"?>
<ScrollView xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
android:id = "@+id/scroll_view"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_margin = "10dp"
android:fillViewport = "true" >
<android.support.v7.widget.CardView 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:id = "@+id/card_view"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_margin = "8dp"
android:elevation = "8dp"
app:cardCornerRadius = "8dp">
<android.support.constraint.ConstraintLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:background = "@color/color_yellow_lighten_4"
android:nestedScrollingEnabled = "false"
android:orientation = "vertical">
<ImageView
android:id = "@+id/imageView_downloaded"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_marginEnd = "8dp"
android:layout_marginStart = "8dp"
android:layout_marginTop = "8dp"
android:scaleType = "fitCenter"
android:src = "@android:drawable/ic_menu_gallery"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toTopOf = "parent" />
<!-- several other TextView elements here not shown -->
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>
Я протестировал макет, используя приведенный выше код, опуская другие элементы. Результат (обрезается нижняя часть cardView) был таким же.
Вы пробовали добавить android:clipToPadding = "false" и android:clipChildren = "false" в свой ScrollViewer?
А также используйте android:layout_height = "match_parent" для ScrollViewer
Настройка android:layout_height = "wrap_content" и android:fillViewPort=true кажется немного странной. Чего вы там пытаетесь достичь?
@Sander Просто потому, что я обычно так делаю, просто чтобы проверить, работает ли это для него.
@TamHuynh Извините за путаницу, это был комментарий не к вам, а к OP. Похоже, мы вводили то же предложение, что и вы отправили ранее.
@CEO tech4lifeapps Мне эта строчка кажется странной: android:nestedScrollingEnabled = "false". ConstraintLayout не является прокручиваемым представлением. @Sander Хорошо, не волнуйся
Я перепробовал все ваши предложения и варианты. К сожалению, реальный результат остался прежним. Но что бросилось в глаза, так это ваше замечание: ConstraintLayout не является прокручиваемым представлением. Итак, что мне делать?
Вот решение, которое я нашел:
<android.support.v7.widget.CardView 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:id = "@+id/card_view"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:elevation = "8dp"
app:cardCornerRadius = "8dp"
app:cardUseCompatPadding = "true"
>
Удалите android:layout_margin = "8dp" из CardView
Добавить app:card_view:cardUseCompatPadding = "true" в CardView
Рад, что ты можешь это исправить. Это решение просто напоминает мне ситуацию, с которой я встречался раньше, но не могу вспомнить в то время. Глупо, что ребенок обрезается по собственному полю, но почему-то кажется разумным.
Поделитесь своим макетом с вопросом