解決ListView嵌套严沥,的高度問題
重寫listView的onMeasure方法
得到的int值前2bit是測(cè)量模式斟赚,后30bit是具體寬高數(shù)值
1.將ListView高度設(shè)置為最大值(onMeasure方法int值有32位藤抡,前兩位是模式织堂、后30是是寬或高)/屏幕寬度,
這樣當(dāng)觸摸到ListView 時(shí)就能一直滑動(dòng)颓遏。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//widthMeasureSpec:組成:2位模式+30位數(shù)字
//最大值
int hightSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
//屏幕的高度
int hightSpec2=MeasureSpec.makeMeasureSpec(getResources().getDisplayMetrics().heightPixels,MeasureSpec.AT_MOST);
//測(cè)量(兩種選一種)
super.onMeasure(widthMeasureSpec, hightSpec2);
}
2狸剃。滾動(dòng)事件
//滾動(dòng)沖突
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
//告訴父控件付枫,我需要此事件
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
//
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.onTouchEvent(ev);
}