У меня есть recyclerview
, который прокручивается по горизонтали. Я отключил прокрутку recyclerview
, когда пользователь нажимает на элемент. Теперь, если пользователь попытается прокрутить список при его блокировке, я хочу показать эффект отказов, который он / она не сможет прокрутить дальше.
Например:
У меня есть список 10 items
, и пользователь нажал на 5th item
. Теперь прокрутка заблокирована, и когда пользователь пытается прокрутить, я хочу показать эффект отскока, который пользователь не может прокручивать.
Вот мой заказ LinearLayoutManager
:
import android.content.Context
import android.support.v7.widget.LinearLayoutManager
import android.util.AttributeSet
class CustomLinearLayoutManager : LinearLayoutManager {
private var isScrollEnabled = true
constructor(context: Context) : super(context)
constructor(context: Context, orientation: Int, reverseLayout: Boolean) : super(context, orientation, reverseLayout)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
fun setScrollEnabled(flag: Boolean) {
this.isScrollEnabled = flag
}
override fun canScrollHorizontally(): Boolean {
//Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll
return isScrollEnabled && super.canScrollHorizontally()
}
}
Вот мой код повторного включения / выключения прокрутки:
val layoutManager = CustomLinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
binding.recyclerView.layoutManager = layoutManager
layoutManager.setScrollEnabled(false)