情景
EditText 文字高度 高于 控件高度 时,正常来说是可以上下滚动EditText中的文字的。
当Edittext嵌套ScrollView在里面时发现无法滚动文字。
原因
查看源码发现ScrollView会拦截滑动事件,致使事件无法传递到EditText。
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
if ((action == MotionEvent.ACTION_MOVE) && mIsBeingDragged) {
return true;
}
...
}
解决方法
写一个View继承于Edittext请求父布局不要拦截事件。
class MyEditText: androidx.appcompat.widget.AppCompatEditText {
...
override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
parent.requestDisallowInterceptTouchEvent(true)
return super.dispatchTouchEvent(event)
}
}