您的位置:首页 > 其它

ListView中嵌套的EditText不能滚动的问题

2014-11-16 14:51 381 查看
我在ListView中添加了EditText用来输入信息,设置了可以多行输入之后,当输入字符较多时,文字会向上滚动,当我想把文字滚动下来时,却发现EditText是无法滚动的,只有外层的ListView可以滚动。这个问题很明显是外层的ListView拦截了它的子控件EditText的事件导致的。通过下面的两篇文章,我找到了解决问题的办法: http://blog.csdn.net/tao_zi7890/article/details/30479911 http://www.cnblogs.com/xitang/archive/2013/06/22/3150380.html
当发生某种触摸事件时,我们可以通过调用父控件的方法requestDisallowInterceptTouchEvent(true)来告诉父控件,我不需要你来处理这个事件,我自己可以处理。怎么去指定父控件的属性呢,当然是通过v.getParent()方法。
那么像我们上面遇到的那种ListView中嵌套EditText的情况时,就可以这样调用。

mEditText.setOnTouchListener(this);

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.edit_text:
v.getParent().requestDisallowInterceptTouchEvent(true);
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐