首先上一下圖:
上下滑動上圖紅框標註的部位時,改變listView的高度,
start
1、擷取ListView的LayoutParams:
LayoutParams params= listView.getLayoutParams();
2、為RelativeLayout設定手勢監聽:
mRlBus.setOnTouchListener(new View.OnTouchListener() {//mRlBus為紅框處外層布局
float y=0;//在此處定義一個y,接收Y座標
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
y=event.getY();//當手指按在RelativeLayout的某個地方時觸發,擷取當前縱座標.
break;
case MotionEvent.ACTION_MOVE:
float x= event.getY()-y;//在此定義一個x,意思為滑動的每一刻,當前時刻的縱座標減去最初剛按下手指的縱座標
if(x>0||params.height<=250){//如果手指是向下滑(x=0)或者ListView的高度小於250,
params.height= (int) (params.height-x); //則執行降低或者升高ListView的操作
if(params.height>250){//這個步驟的意思為:假設使用者很快速的往上滑,可能造成高度大於250
params.height=250;//如果過高,那麼固定為250
}
}
if(params.height<0){//這個步驟的意思為:假設使用者很快速的往下滑,可能造成高度小於0,造成ListView選取滑動之前的高度為當前高度
params.height=0;
}
listView.setLayoutParams(params);
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
如果幫到了觀眾們,點個贊吧~