Элементы Recyclerview обрезаются в конце экрана - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь показать список людей, использующих Recyclerview.Но список просто обрезается в конце экрана.Если я изменяю макет, отображается больше людей, но он все равно обрезается в конце экрана

В первом списке должно быть 12 элементов, тогда как в нем отображаются только 9/10 элементов, которые изначально видны, даже еслиостальные элементы должны быть видны, если я прокручиваю вниз.Если вид рециркулятора изначально полностью невидим (см. Второй), то при прокрутке можно увидеть все элементы.

Изображения:

https://ibb.co/kg2q03H

https://ibb.co/19YgXT9

https://ibb.co/0f03GKH

https://ibb.co/3vpgQSp

<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:context=".ViewDetails" android:scrollbarSize="0dp"
>
    <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
                  android:orientation="vertical">
        <TableLayout android:layout_height="wrap_content"
                     android:layout_width="match_parent" android:id="@+id/table">
            <TableRow android:layout_width="match_parent" android:layout_height="match_parent">
                <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" android:layout_gravity="left">
                    <ImageView
                            android:layout_width="24dp"
                            android:layout_height="24dp" android:id="@+id/name" android:layout_weight="1"
                            android:layout_margin="16dp" app:srcCompat="@drawable/wappentransparent"/>
                    <TextView
                            android:text="Musikprobe"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" android:id="@+id/nameText"
                            android:layout_gravity="center_vertical" android:textSize="24sp"
                            android:layout_margin="8dp" android:textColor="@color/primaryTextColor"
                    />
                </LinearLayout>
            </TableRow>
            <TableRow android:layout_width="match_parent" android:layout_height="match_parent">
                <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" android:layout_gravity="left">
                    <ImageView
                            android:layout_width="24dp"
                            android:layout_height="24dp" android:id="@+id/date" android:layout_weight="1"
                            android:layout_margin="16dp" app:srcCompat="@drawable/ic_date_range"/>
                    <TextView
                            android:text="01.01.2000"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" android:id="@+id/dateText"
                            android:layout_gravity="center_vertical" android:textSize="18sp"
                            android:layout_margin="8dp" android:textColor="@color/primaryTextColor"/>
                </LinearLayout>
            </TableRow>
            <TableRow android:layout_width="match_parent" android:layout_height="match_parent">
                <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" android:layout_gravity="left">
                    <ImageView
                            android:layout_width="24dp"
                            android:layout_height="24dp" android:id="@+id/time" android:layout_weight="1"
                            android:layout_margin="16dp" app:srcCompat="@drawable/ic_schedule_black_24dp"/>
                    <TextView
                            android:text="12:00"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" android:id="@+id/timeText"
                            android:layout_gravity="center_vertical" android:textSize="18sp"
                            android:layout_margin="8dp" android:textColor="@color/primaryTextColor"/>
                    <TextView
                            android:text="Uhr"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" android:id="@+id/uhrConst"
                            android:layout_gravity="center_vertical" android:textSize="18sp"
                            android:layout_marginTop="8dp"
                            android:layout_marginBottom="8dp" android:textColor="@color/primaryTextColor"/>
                </LinearLayout>
            </TableRow>
            <TableRow android:layout_width="match_parent" android:layout_height="match_parent"
                      android:id="@+id/infoTabRow">
                <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" android:layout_gravity="left">
                    <ImageView
                            android:layout_width="24dp"
                            android:layout_height="24dp" android:id="@+id/info" android:layout_weight="1"
                            android:layout_margin="16dp" app:srcCompat="@drawable/ic_event_note"/>
                    <TextView
                            android:text="Hier steht ganz viel info und so"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" android:id="@+id/infoText"
                            android:layout_gravity="center_vertical" android:textSize="18sp"
                            android:layout_margin="8dp" android:textColor="@color/primaryTextColor"/>
                </LinearLayout>
            </TableRow>

            <TableRow
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                <View
                        android:id="@+id/divider"
                        android:layout_width="wrap_content"
                        android:layout_height="1dp"
                        android:background="?android:attr/listDivider"
                />
            </TableRow>

            <TableRow>

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

                    <Button
                            android:id="@+id/signOut"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:backgroundTint="@android:color/holo_red_light"
                            android:text="ABMELDEN"
                            app:layout_constraintStart_toEndOf="@+id/signUp"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintBottom_toBottomOf="parent"/>
                    <Button
                            android:id="@+id/signUp"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:backgroundTint="@android:color/holo_green_light"
                            android:text="ANMELDEN"
                            app:layout_constraintTop_toTopOf="parent"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintStart_toStartOf="parent"/>
                </androidx.constraintlayout.widget.ConstraintLayout>
            </TableRow>

            <TableRow
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                <View
                        android:id="@+id/divider2"
                        android:layout_width="wrap_content"
                        android:layout_height="1dp"
                        android:background="?android:attr/listDivider"
                />
            </TableRow>

            <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"
                      android:id="@+id/signedInHeader">
                <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" android:layout_gravity="left">
                    <ImageView
                            android:layout_width="24dp"
                            android:layout_height="24dp" android:id="@+id/signedUp" android:layout_weight="1"
                            android:layout_margin="16dp" app:srcCompat="@drawable/ic_people_green"/>
                    <TextView
                            android:id="@+id/teilnehmer"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textSize="24sp"
                            android:layout_margin="8dp"
                            android:text="Teilnehmer" android:textColor="@color/primaryTextColor"
                            android:layout_gravity="center_vertical"/>

                </LinearLayout>
            </TableRow>


            <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/rvTeilnehmer"
                    android:layout_width="match_parent"
                    android:layout_marginLeft="56dp"
                    android:layout_marginStart="56dp" android:layout_height="match_parent"/>
            <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"
                      android:id="@+id/signedOutHeader">
                <LinearLayout
                        android:orientation="horizontal"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" android:layout_gravity="left">
                    <ImageView
                            android:layout_width="24dp"
                            android:layout_height="24dp" android:id="@+id/signedOut" android:layout_weight="1"
                            android:layout_margin="16dp" app:srcCompat="@drawable/ic_people_red"/>
                    <TextView
                            android:id="@+id/abgesagt"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textSize="24sp"
                            android:layout_margin="8dp"
                            android:text="Abgesagt" android:textColor="@color/primaryTextColor"
                            android:layout_gravity="center_vertical"/>

                </LinearLayout>
            </TableRow>


            <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/rvAbgesagt"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" android:layout_marginLeft="56dp"
                    android:layout_marginStart="56dp"/>
        </TableLayout>
    </FrameLayout>
</ScrollView>

        rvsi = view.findViewById(R.id.rvTeilnehmer)
        val llmsi = object : LinearLayoutManager(context) {
            override fun canScrollVertically(): Boolean {
                return false
            }
        }
        rvsi!!.layoutManager = llmsi
        rvsi!!.adapter = RVPersonAdapter(PersonList().persons)
//PersonList().person is an arraylist of 12 Persons(which contain a String with the name)

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Подумайте об использовании многовидового типа RecyclerView вместо RecyclerView в ScrollView. Вы можете использовать NestedScrollView + RecyclerView в качестве @ VerumCH , предложенного выше (также следует отключить вложенную прокрутку, задав для атрибута ReeslerView nestedScrollingEnabled значение false), но есть другая проблема. Если вы будете использовать RecyclerView в NestedScrollView, представления списка не будут переработаны и будут предоставлены вам сразу.

0 голосов
/ 15 июня 2019

Судя по вашему обновленному сообщению, у вас может быть проблема с вложенной прокруткой. См. RecyclerView внутри ScrollView не работает .

Суть в том, что вам нужно заменить ScrollView на NestedScrollView, а затем установить флажок в ваших RecyclerViews, чтобы он мог правильно прокручиваться.

Если вы не используете NestedScrollView, родительский ScrollView будет перехватывать все события прокрутки, вместо того, чтобы отправлять их в RecyclerViews - так что элементы технически находятся в рециркуляторах, вы просто не можете получить к ним доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...