首先实现View.OnTouchListener
对Editext设置监听
et_baseInfo.setOnTouchListener(this)
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (v?.id == R.id.et_baseAuditInfo || v?.id == R.id.et_suggestion){
if (canVerticalScall(v as EditText)){
v.parent.requestDisallowInterceptTouchEvent(true)//告诉父控件,自己处理事件
if (event?.action == MotionEvent.ACTION_UP){
v.parent?.requestDisallowInterceptTouchEvent(false)//告诉父控件,可以处理事件了
}
}
}
return false
}
判断EditText是否可以滑动
fun canVerticalScall(editText: EditText): Boolean{
//滚动的距离
val scrollY = editText.scrollY
//控件内容总高度
val scrollRange = editText.layout.height
//控件实际显示的高度
val scrollExtent = editText.height - editText.compoundPaddingTop - editText.compoundPaddingEnd
//控件内容总高度,与实际高度的差值
val scrollDeference = scrollRange - scrollExtent
if (scrollDeference == 0){
return false
}
return (scrollY > 0 || (scrollY < scrollDeference - 1))
}