Android Размер прокрутки в студии ограничен - PullRequest
2 голосов
/ 10 июля 2020

В настоящее время я разрабатываю приложение для Android Studio, и у меня проблема с прокруткой. Я создаю кнопки динамически (с количеством кнопок, равным количеству кнопок в моей базе данных), но я не могу прокрутить страницу до конца и увидеть каждую кнопку. Я не знаю, вызвана ли эта проблема ScrollView или LinearLayout внутри ScrollView. Вот код XML и Java для него: 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 (l oop, который создает кнопки динамически):

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);
        }

Вот результат изображение Спасибо за вашу помощь, это мой первый пост здесь, и я новичок в кодировании в Java!

1 Ответ

1 голос
/ 11 июля 2020

Вам нужно обернуть весь макет представлением прокрутки, поскольку обертывание только linearlayout (в контексте вашего кода) сделает макет прокручиваемым, но он не будет полностью включать его дочерние представления. рассмотрите возможность использования следующего макета: (измените некоторые значения для вашего удобства)

<?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>
...