滚动listview中的edittext

时间:2013-12-03 03:06:18

标签: android android-listview scroll android-edittext

我的ListView项目包含EditText。每个edittext都有多行,但行的高度是有限的。因此,我需要在edittext中滚动。我搜索了很多解决方案但是没有成功。

2 个答案:

答案 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;
        }

}