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

本文介绍了如何解决在Android开发中ListView嵌套EditText时出现的文字滚动问题。通过设置EditText的触摸监听并调用getParent().requestDisallowInterceptTouchEvent()方法,可以让EditText在ListView中正常滚动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       我在ListView中添加了EditText用来输入信息,设置了可以多行输入之后,当输入字符较多时,文字会向上滚动,当我想把文字滚动下来时,却发现EditText是无法滚动的,只有外层的ListView可以滚动。这个问题很明显是外层的ListView拦截了它的子控件EditText的事件导致的。通过下面的两篇文章,我找到了解决问题的办法:

http://blog.youkuaiyun.com/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;
	}




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值