Android Can';t仅在一个方向上滑动ViewPager2
我尝试在ViewPager2中仅在一个方向(向右)启用滑动。我有5页 我在活动中尝试了以下方法:Android Can';t仅在一个方向上滑动ViewPager2,android,android-viewpager2,Android,Android Viewpager2,我尝试在ViewPager2中仅在一个方向(向右)启用滑动。我有5页 我在活动中尝试了以下方法: viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position)
viewPager2.registerOnPageChangeCallback(object :
ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
if (currentPage == position) {
dataBinding.viewPager2.setUserInputEnabled(false)
}
if (currentPage < position) { // swipe left
dataBinding.viewPager2.setUserInputEnabled(true)
} else if (currentPage > position) { // swipe right
dataBinding.viewPager2.setUserInputEnabled(false)
}
currentPage = position;
}
})
viewPager2.registerOnPageChangeCallback(对象:
ViewPager2.OnPageChangeCallback(){
覆盖所选页面(位置:Int){
super.onPageSelected(位置)
如果(当前页面==位置){
dataBinding.viewPager2.setUserInPuneEnabled(false)
}
如果(当前页面<位置){//向左滑动
dataBinding.viewPager2.SetUserInPutened(真)
}如果(当前页面>位置){//向右滑动,则为else
dataBinding.viewPager2.setUserInPuneEnabled(false)
}
当前页面=位置;
}
})
但这没有帮助。这是禁用两个方向。试试这个方法
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager2.widget.ViewPager2
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
var previousPage: Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewpager.adapter = MyAdapter(this)
viewpager.orientation = ViewPager2.ORIENTATION_HORIZONTAL
// try this to disable swiping in previous page
viewpager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
if (position < previousPage) {
viewpager.setCurrentItem(previousPage, true)
} else {
previousPage = position
}
}
})
}
}
导入android.os.Bundle
导入androidx.appcompat.app.appcompat活动
导入androidx.viewpager2.widget.viewpager2
导入kotlinx.android.synthetic.main.activity\u main*
类MainActivity:AppCompatActivity(){
变量上一页:Int=0
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewpager.adapter=MyAdapter(此)
viewpager.orientation=ViewPager2.orientation\u水平
//尝试此操作以禁用上一页中的刷卡
viewpager.registerOnPageChangeCallback(对象:ViewPager2.OnPageChangeCallback(){
覆盖已滚动的页面(
职位:Int,
位置偏移:浮动,
位置偏移像素:Int
) {
super.onPageScrolled(位置、位置偏移、位置偏移像素)
如果(位置<上一页){
viewpager.setCurrentItem(上一页,真)
}否则{
上一页=位置
}
}
})
}
}