在 recyclerview 项目之间滑动
Posted
技术标签:
【中文标题】在 recyclerview 项目之间滑动【英文标题】:Sliding between recyclerview items 【发布时间】:2021-11-21 15:36:52 【问题描述】:我需要做这样的事情
当我滑动或选择第三个选项或第一个选项时,视图应该变成这样
我尝试使用线性布局,当我滑动时,我在运行时添加了边距,但它看起来不太好,有人可以建议我一些实现此目的的好主意吗?
【问题讨论】:
你试过 scaleX 和 scaleY 吗? 【参考方案1】:如果你想通过类似 LinearLayout 和 ImageView 来实现它,你可以改变 ImageView 的 margin 或 padding。 但是出于这个原因,有一些有用的库。
像这样: 你可以在这里找到它: https://guides.codepath.com/android/Bottom-Navigation-Views
此外,您还可以在此处找到其他一些第三方库: https://camposha.info/android-examples/android-bottom-navigation-libraries/
希望对你有帮助
【讨论】:
【参考方案2】:我认为在您的情况下,最好使用 ViewPager
并添加 Transformer
来调整所选项目的大小和动画。
这是我的ViewPager
示例:
在您的xml
文件中:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
visibility="@!loading"
android:layout_
android:layout_
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="40dp"
android:paddingEnd="40dp" />
这是您的fragment/activity
用于配置ViewPager
:
binding.viewPager.apply
offscreenPageLimit = 100
val transformer = CompositePageTransformer()
transformer.addTransformer(MarginPageTransformer(PixelUtil.dpToPx(20f)))
transformer.addTransformer page, position ->
run
val r = 1 - abs(position)
page.scaleY = 0.85f + r * 0.15f
setPageTransformer(transformer)
registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback()
override fun onPageSelected(position: Int)
viewModel.currentPosition.value = position
super.onPageSelected(position)
)
这里是设置Adapter
为ViewPager
:
val simpleAdapter = ModelsListAdapter(models) onClick()
binding.viewPager.adapter = simpleAdapter
适配器应该是这样的:
class ModelsListAdapter(private val list: ArrayList<Model>,val itemClick:() -> (Unit))
: RecyclerView.Adapter<ModelViewHolder>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ModelViewHolder
val inflater = LayoutInflater.from(parent.context)
return ModelViewHolder(inflater, parent,itemClick)
override fun onBindViewHolder(holder: ModelViewHolder, position: Int)
val movie: Model = list[position]
holder.bind(movie)
override fun getItemCount(): Int = list.size
【讨论】:
以上是关于在 recyclerview 项目之间滑动的主要内容,如果未能解决你的问题,请参考以下文章
RecyclerView smoothScroll位于中心位置。安卓
RecyclerView 与以编程方式创建的视图:哪个更好?
如何使用kotlin滑动删除存储在firestore中的recyclerview项目?