针对ScrollView和EditText合用时,EditText长度超过本身高度时不能滑动问题
2016-10-10 17:58
549 查看
由于ScrollView自身的滑动事件,将EditText的焦点抢占 ,所以需要对EditText的onTouch事件进行重写
使用此方法确实解决了两者冲突事件,但是由于当触碰Edittext时,将滑动事件交给它,使得ScrollView的滑动事件失效,所以滑动时,有种卡顿的感觉
后来再网上查了资料 ,找到了此方法
完整代码如下:
mEdDetails.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (v.getId()) { case R.id.ed_details: v.getParent().requestDisallowInterceptTouchEvent(true); switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_UP: v.getParent().requestDisallowInterceptTouchEvent(false); break; } } return false; } });
使用此方法确实解决了两者冲突事件,但是由于当触碰Edittext时,将滑动事件交给它,使得ScrollView的滑动事件失效,所以滑动时,有种卡顿的感觉
后来再网上查了资料 ,找到了此方法
/** * EditText竖直方向是否可以滚动 * @param editText 需要判断的EditText * @return true:可以滚动 false:不可以滚动 */ public static boolean canVerticalScroll(EditText editText) { //滚动的距离 int scrollY = editText.getScrollY(); //控件内容的总高度 int scrollRange = editText.getLayout().getHeight(); //控件实际显示的高度 int scrollExtent = editText.getHeight() - editText.getCompoundPaddingTop() -editText.getCompoundPaddingBottom(); //控件内容总高度与实际显示高度的差值 int scrollDifference = scrollRange - scrollExtent; if(scrollDifference == 0) { return false; } return (scrollY > 0) || (scrollY < scrollDifference - 1); }这个方法会根据Edittext的内容判断是否需要滚动,这样当Edittext内容不需要滑动时,滚动事件仍然交给ScrollView处理
完整代码如下:
mEdDetails.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (v.getId()) { case R.id.ed_details: // 解决scrollView中嵌套EditText导致不能上下滑动的问题 if (canVerticalScroll(mEdDetails)) v.getParent().requestDisallowInterceptTouchEvent(true); switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_UP: v.getParent().requestDisallowInterceptTouchEvent(false); break; } } return false; } });
相关文章推荐
- 关于editText和scrollView起冲突,editText内容超过编剧不能滑动的问题
- 解决ScrollView中嵌套EditText无法滑动的问题
- 解决 scrollview嵌套recyclerview 中不能滑动,高度不正常的问题。
- ListView、ScrollView中嵌套的EditText不能滚动的问题
- scrollView与EditText冲突,EditText不能滑动
- android中Scrollview中套ListView,高度超出屏幕,listview无法滑动问题
- 【问题】在TabHost以外的EditText不能使用硬件盘输入数字
- 今天很郁闷,pymssql 出问题了 Text 字段不能超过4K(4096)个字符
- 滑动冲突之EditText-ScrollView
- 参考解决iOS7中scrollView设置了contentSize后仍然不能滑动的问题
- EditText和ScrollView共存,无法获取焦点,不能滚动的解决方法
- ListView套上ScrollView; ListView显示不全; ListView只显示一条 不能全局滑动问题
- ScrollView与ListView合用(正确计算Listview的高度)的问题解决
- ScrollView和EditText的滚动冲突问题
- 继承ScrollView完美解决ListView+EditText焦点问题
- Android 6.0 解决Recyclerview 在 Scrollview 中不能高度自适应问题
- ScrollView嵌套EditText,导致EditText显示多行时滑动失效的问题
- EditText不能获取文本问题
- listView背景问题以及限制editText字数以及如果想通知别人已经不能在写
- ScrollView嵌套EditText,导致EditText显示多行时滑动失效的问题