自定义一个可以嵌套在ScrollView中使用的ListView和GridView

来源:互联网 发布:做大数据需要什么语言 编辑:程序博客网 时间:2024/04/29 22:04

项目中可能要用到在ScrollView总嵌套使用listView 的时候,但是由于两个控件都是有上下滑动的事件,所以嵌套的时候使用Android自带的ListView是无法做到的,要自己定义一个ListView:

/** * 自定义listview 使之能够嵌套在scrollview中 */public class ListViewForScrollView extends ListView{public ListViewForScrollView(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);}public ListViewForScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public ListViewForScrollView(Context context) {super(context);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}
对于GridView是一样的原理:

/** *<span style="font-family: Arial, Helvetica, sans-serif;">自定义</span><span style="font-family: Arial, Helvetica, sans-serif;">GridView</span><span style="font-family: Arial, Helvetica, sans-serif;">使之能够嵌套在scrollview中</span><span style="font-family: Arial, Helvetica, sans-serif;"></span> */public class MyGridView extends GridView{public MyGridView(Context context) {super(context);}public MyGridView(Context context,AttributeSet attrs) {super(context,attrs);}public MyGridView(Context context,AttributeSet attrs,int defStyle) {super(context,attrs,defStyle);}@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_MOVE) {return true;}return super.dispatchTouchEvent(ev);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expendSpac = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expendSpac);}}




0 0