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

       我在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;
	}




你可能感兴趣的:(【Android】)