Reputation: 35
In the beginning, I searched for a solution to the problem extensively but couldn't resolve it, even after trying all the solutions and answers to similar questions here.
I have a scrollview which contain cardviews but it is not scrollable .. here is the code
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:id="@+id/cdAL1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="20dp"
app:cardElevation="1dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.46">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvAL1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:fontFamily="@font/party_confetti"
android:gravity="center"
android:text="@string/level1"
android:textColor="@color/white"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imgL1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/description"
android:src="@drawable/last"
app:layout_constraintBottom_toTopOf="@+id/imgB1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvAL1" />
<TextView
android:id="@+id/tvAL1L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="@+id/imgL1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgL1"
app:layout_constraintTop_toTopOf="@+id/imgL1" />
<ImageView
android:id="@+id/imgB1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:contentDescription="@string/description"
android:src="@drawable/best"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgL1" />
<TextView
android:id="@+id/tvAL1B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgB1"
app:layout_constraintTop_toTopOf="@+id/imgB1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/addLevel2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="20dp"
app:cardElevation="1dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.46">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvAL2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:fontFamily="@font/party_confetti"
android:gravity="center"
android:text="@string/level2"
android:textColor="@color/white"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imgL2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/description"
android:src="@drawable/last"
app:layout_constraintBottom_toTopOf="@+id/imgB2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvAL2" />
<TextView
android:id="@+id/tvAL2L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="@+id/imgL2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgL2"
app:layout_constraintTop_toTopOf="@+id/imgL2" />
<ImageView
android:id="@+id/imgB2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:contentDescription="@string/description"
android:src="@drawable/best"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgL2" />
<TextView
android:id="@+id/tvAL2B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgB2"
app:layout_constraintTop_toTopOf="@+id/imgB2" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<!-- more cardviews are here -->
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
Note: The code above is icluded in another xml file
<include
layout="@layout/###"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
EDIT: I replaced ConstraintLayout with LinearLayout and still have the same problem
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<androidx.cardview.widget.CardView
android:id="@+id/cdAL1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="20dp"
app:cardElevation="1dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintWidth_percent="0.46">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvAL1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:fontFamily="@font/party_confetti"
android:gravity="center"
android:text="@string/level1"
android:textColor="@color/white"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imgL1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/description"
android:src="@drawable/last"
app:layout_constraintBottom_toTopOf="@+id/imgB1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvAL1" />
<TextView
android:id="@+id/tvAL1L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="@+id/imgL1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgL1"
app:layout_constraintTop_toTopOf="@+id/imgL1" />
<ImageView
android:id="@+id/imgB1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:contentDescription="@string/description"
android:src="@drawable/best"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgL1" />
<TextView
android:id="@+id/tvAL1B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgB1"
app:layout_constraintTop_toTopOf="@+id/imgB1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/addLevel2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="20dp"
app:cardElevation="1dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintWidth_percent="0.46">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvAL2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:fontFamily="@font/party_confetti"
android:gravity="center"
android:text="@string/level2"
android:textColor="@color/white"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imgL2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/description"
android:src="@drawable/last"
app:layout_constraintBottom_toTopOf="@+id/imgB2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvAL2" />
<TextView
android:id="@+id/tvAL2L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="@+id/imgL2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgL2"
app:layout_constraintTop_toTopOf="@+id/imgL2" />
<ImageView
android:id="@+id/imgB2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:contentDescription="@string/description"
android:src="@drawable/best"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgL2" />
<TextView
android:id="@+id/tvAL2B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:fontFamily="@font/party_confetti"
android:text="@string/zero"
android:textColor="@color/colorAccent"
android:textSize="42sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/imgB2"
app:layout_constraintTop_toTopOf="@+id/imgB2" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
<!-- more cardviews here -->
</LinearLayout>
</ScrollView>
Upvotes: 0
Views: 44
Reputation: 230
The main issue with your layout is the use of a ConstraintLayout inside a ScrollView. The ConstraintLayout doesn't handle wrapping content in a way that allows it to grow vertically inside a ScrollView easily, especially with complex constraints. This can prevent the ScrollView from scrolling as expected.
Here are the steps to troubleshoot and fix the scrolling issue: 1.Ensure Vertical Layout: Ensure that your ConstraintLayout can grow vertically. Sometimes, defining app:layout_constraintTop_toBottomOf="parent" and app:layout_constraintBottom_toBottomOf="parent" can restrict the height. Remove these constraints if they exist.
2.Use a LinearLayout or Nested ConstraintLayouts: A LinearLayout with vertical orientation inside the ScrollView might be more straightforward for a scrollablelist of items. You can also use nested ConstraintLayout for each card if you need complex constraints within each card.
3.Debugging the ScrollView Content: To debug, simplify the layout to see if the ScrollView starts working with basic content, then gradually add complexity. I found this solution here
Upvotes: 0