我正在尝试显示使用Recyclerview的人员列表。但是列表仅在屏幕末尾被切断。 如果我更改布局,则会显示更多人,但在屏幕末尾仍然会被剪掉
第一个列表应包含12个元素,而它仅显示最初可见的9/10个元素,即使我向下滚动时其余元素也应可见。 如果recyclerview最初是完全不可见的(请参阅第二个视图),则可以在滚动时看到所有元素。
图片:
<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)
答案 0 :(得分:0)
根据更新后的帖子,看来嵌套滚动可能存在问题。参见RecyclerView inside ScrollView is not working。
要点是,您需要用NestedScrollView替换ScrollView,然后在RecyclerViews中设置一个标志,以使其能够正确滚动。
如果您不使用NestedScrollView,则父ScrollView将拦截所有滚动事件,而不是将其发送到RecyclerViews-因此,从技术上讲,这些项目都在回收站中,您就无法到达它们。 / p>
答案 1 :(得分:0)
考虑在滚动视图中使用多视图类型RecyclerView ,而不是RecyclerView。您可以将NestedScrollView + RecyclerView用作上面建议的 @VerumCH (也应通过将RecyclerView的nestedScrollingEnabled属性设置为false来禁用嵌套滚动),但是还有另一个问题。如果您将在NestedScrollView中使用RecyclerView,则列表视图将不会被回收并且会立即提供给您。