如何在具有用于滑动的 ItemTouchHelper 的 RecyclerView 中使 TextView 可滚动?
Posted
技术标签:
【中文标题】如何在具有用于滑动的 ItemTouchHelper 的 RecyclerView 中使 TextView 可滚动?【英文标题】:How to make a TextView scrollable within a RecyclerView that has an ItemTouchHelper for swiping? 【发布时间】:2021-12-02 09:40:59 【问题描述】:这是我的应用程序的屏幕截图。
圆圈区域是带有 TouchHelper 的 RecyclerView,因此您可以向左滑动以删除列表中的项目。
回收器列表中的每一项都是一个CardView,其中包含一个线性布局,文本是一个简单的TextView。
我希望能够滚动每个 TextView 中的文本,并且能够滑动删除,但只有滑动删除才有效。
我需要做些什么来启用这些 TextView 的滚动,这些 TextView 的文本多于 4 行?
这里是一些相关的代码和布局。
// Initialize comment list adapter
commentAdapter = CommentListAdapter(this)
binding.comments.adapter = commentAdapter
binding.comments.layoutManager = LinearLayoutManager(this)
binding.comments.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL))
val itemTouchHelper = ItemTouchHelper(SwipeToDeleteCallback(commentAdapter, (ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT)))
itemTouchHelper.attachToRecyclerView(binding.comments)
这是每个“评论”TextView 的 XML。请注意我是如何设置垂直滚动条的,正如大多数 Internet 所推荐的那样。而且我将行数限制为 4 行,以使每个单独的项目更小。
我将 TextView 中的行数限制为 4 可能不是系统所期望的,因为通常整个文本将显示在每个 RecyclerView 项目中。如果我删除 maxLines 限制,它确实可以这样工作。
<TextView
android:id="@+id/comment_text"
android:layout_
android:layout_
android:scrollbars="vertical"
android:maxLines="4"
android:text="@string/comment_text" />
【问题讨论】:
【参考方案1】:将TextView
包裹在ScrollView
中
<ScrollView
android:layout_
android:layout_
android:fillViewport="true">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<TextView
android:id="@+id/comment_text"
android:layout_
android:layout_
android:scrollbars="vertical"
android:maxLines="4"
android:text="@string/comment_text" />
</LinearLayout>
</ScrollView>
【讨论】:
我是根据其他堆栈溢出问题这样做的,但效果为零。我的***布局元素也是 CardView 而不是 ScrollView。这是针对列表中的单个项目,而不是整个活动页面。 在这个例子中,LinearLayout 的意义何在?以上是关于如何在具有用于滑动的 ItemTouchHelper 的 RecyclerView 中使 TextView 可滚动?的主要内容,如果未能解决你的问题,请参考以下文章