Noibe
Noibe

Reputation: 33

Android Studio limited scrolling size

I'm currently developing an application on Android Studio, and I've an issue with a scrollview. I create buttons dynamically (with a number of buttons equal to the number of buttons in my Database), but I can't scroll to the bottom of the page and see every button. I don't know if this issue is caused by the ScrollView or by the LinearLayout inside the ScrollView. Here is the XML and the Java code for it : XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/layoutgroup"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient_list"
    tools:context=".GroupList">


    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="134dp"
        android:fontFamily="@font/cartoon"
        android:text="Artists"
        android:textColor="#FFFFFF"
        android:textSize="40dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/back"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/back"
        android:layout_width="0dp"
        android:layout_height="68dp"
        android:layout_marginStart="11dp"
        android:layout_marginEnd="67dp"
        app:layout_constraintEnd_toStartOf="@+id/textView3"
        app:layout_constraintHorizontal_bias="0.135"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0"
        app:srcCompat="@drawable/back2" />

    <ScrollView
        android:id="@+id/listG"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="1dp"
        android:fillViewport="true"
        android:layout_marginTop="10dp"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/back">

        <LinearLayout
            android:id="@+id/layoutG"
            android:layout_width="match_parent"
            android:fillViewport="true"
            android:layout_height="wrap_content"
            android:orientation="vertical" />
    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

Java (the loop that creates buttons dynamically) :

while(db.selectArtist(i).size()>0){
            List<String> data = db.selectArtist(i);
            Log.i("Artiste",String.valueOf(data));
            Button bouton = new Button(getApplicationContext());
            bouton.setX(160);
            bouton.setY(1 * i + 60);
            bouton.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
            layoutG.addView(bouton,LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            bouton.setText(data.get(0));
            bouton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent start = new Intent(getApplicationContext(), start.class);
                    start.putExtra("NomArtiste", String.valueOf(bouton.getText()));
                    start.putExtra("IdArtiste", String.valueOf(data.get(1)));
                    startActivity(start);
                    finish();
                }
            });
            i=i+1;
            listB.add(i + 1);
        }

Here is the result image Thanks for your help, it's my first post here, and I'm new in coding in Java!

Upvotes: 2

Views: 207

Answers (1)

Shreemaan Abhishek
Shreemaan Abhishek

Reputation: 1220

You need to wrap the whole layout with the scroll view as wrapping just the linearlayout (in context of your code) will make the layout scrollable but it wont include its child views fully. consider using the following layout: (tweak some values to your comfort)

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/your-desired-view-name"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_marginTop="10dp"
android:background="your-desired-background-here"
android:fillViewport="true"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/back"
tools:context="your-desired-context-here">

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="134dp"
        android:fontFamily="@font/cartoon"
        android:text="Artists"
        android:textColor="#FFFFFF"
        android:textSize="40dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/back"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/back"
        android:layout_width="0dp"
        android:layout_height="68dp"
        android:layout_marginStart="11dp"
        android:layout_marginEnd="67dp"
        app:layout_constraintEnd_toStartOf="@+id/textView3"
        app:layout_constraintHorizontal_bias="0.135"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0"
        app:srcCompat="@drawable/back2" />

    <LinearLayout
        android:id="@+id/layoutG"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:orientation="vertical" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

Upvotes: 1

Related Questions