在某些场景下,需要使用EditText来让用户输入信息。当EditText设置maxLines后,用户输入行数超过maxLines后,只能通过上下滑动来浏览所有文字。
但当EditText外层使用ScrollView来让整个界面滑动时,用户触摸EditText区域时不能再显示折叠的文字,而只是滑动了整个srollview。
实现时需要注意的是,当EditText框内容并未超过maxLines时,此时用户触摸EditText区域进行滑动时,期望整个ScrollView是滑动的;只有当EditText框内容大于maxLines时,才需要由EditText自身来处理滚动事件。
具体解决方案如下:
//设置touch事件
mEditText = (EditText) findViewById(R.id.edit_text);
mEditText.setOnTouchListener(this);
//重写onTouch方法
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
//触摸的是EditText控件,且当前EditText可以滚动,则将事件交给EditText处理;否则将事件交由其父类处理
if ((view.getId() == R.id.edit_text && canVerticalScroll(mEditText))) {
view.getParent().requestDisallowInterceptTouchEvent(true);
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
view.getParent().requestDisallowInterceptTouchEvent(false);
}
}
return false;
}
/**
* EditText竖直方向是否可以滚动
* @param editText 需要判断的EditText
* @return true
滑动冲突问题解决【EditText嵌套在ScrollView】
最新推荐文章于 2024-08-11 03:40:51 发布