原理很简单就是:onTouchEvent和onInterceptTouchEvent监听事件不让它们滑动
package net.intelink.express.widget
import android.content.Context
import android.support.v4.view.ViewPager
import android.util.AttributeSet
import android.view.MotionEvent
/**
* Created by 陆维淋 on 2017-12-19.
*/
class NoScrollViewPager : ViewPager {
private var isScroll: Boolean = false
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
fun setScroll(scroll: Boolean) {
isScroll = scroll
}
override fun onTouchEvent(event: MotionEvent): Boolean {
return this.isScroll && super.onTouchEvent(event)
}
override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
return this.isScroll && super.onInterceptTouchEvent(event)
}
}
这个里面要重写两个构造函数,一个是context,另一个是context和attrs,缺一不可。
布局文件是:
<net.intelink.express.widget.NoScrollViewPager
android:id="@+id/vp_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
Activity调用方法是:
vp_content.setScroll(false)
这样,就搞定了,感觉很简单,但是一开始构造函数不会写,也弄了好久。