我的ListView
项目包含EditText
。每个edittext都有多行,但行的高度是有限的。因此,我需要在edittext中滚动。我搜索了很多解决方案但是没有成功。
答案 0 :(得分:0)
在这种情况下,touchEvent由ListView处理,并且不会传递给子节点。您可以覆盖 onInterceptTouchEvent 并从中返回false,然后触摸事件将传递给子项(EditText)。
public class myListView extends ListView {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
return false;
}
}
注意:如果将touchEvent传递给子节点,则无法滚动ListView。因此,根据您的要求,您必须决定何时从onInterceptTouchEvent返回false。
参考:http://developer.android.com/training/gestures/viewgroup.html
答案 1 :(得分:0)
使用此自定义列表视图我遇到了与使用以下代码解决的相同问题。
public class Mylistview extends ListView{
public Mylistview(Context context) {
super(context);
}
public Mylistview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Mylistview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
Log.i("VerticalScrollview", "onInterceptTouchEvent: DOWN super false" );
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_MOVE:
return false; // redirect MotionEvents to ourself
case MotionEvent.ACTION_CANCEL:
Log.i("VerticalScrollview", "onInterceptTouchEvent: CANCEL super false" );
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
Log.i("VerticalScrollview", "onInterceptTouchEvent: UP super false" );
return false;
default: Log.i("VerticalScrollview", "onInterceptTouchEvent: " + action ); break;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
Log.i("VerticalScrollview", "onTouchEvent. action: " + ev.getAction() );
return true;
}
}