在 Android 有时候会用到一个 ScrollView 嵌套一个 ScrollView 的问题,虽说不推荐这样使用。但是还是可以了解一下。
下面是一个 ListView 嵌套一个 ListView 。效果如下:
在上面的效果图中,主要是在于子 ListView 的滑动。这时候就需要由事件的分发机制来解决了。子 ListView 需要滑动,那么父 ListView 就不能把事件给拦截了,需要交给子 ListView 。
基于上述思想,我们可以自定义父 ListView ,在 onInterceptTouchEvent() 方法中处理事件。这样就可以滑动子 ListView 了。
父 ListView 代码:
ParentListView.java :
package com.example.scrollevent;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ListView;
public class ParentListView extends ListView {
public ParentListView(Context context) {
super(context);
}
public ParentListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ParentListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 将 onInterceptTouchEvent的返回值设置为 false,取消其对触摸事件的处理,将事件分发给子view
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
}