大家好,我想在scrolllView向上滚动时隐藏linearLayout。 我试着做下一个: 当我将手指向上移动1 px-将linearLayout向上移动1 px时,当LinearLayout变为不可见时,之后 - 将scrollview移动到顶部。
scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
downXValue = event.getX();
downYValue = event.getY();
previousYvalue = downYValue;
break;
}
case MotionEvent.ACTION_UP: {
float currentY = event.getY();
if (downYValue < currentY) {
previousYvalue = 0;
((CompanyInfoActivityNew) getActivity()).setPanelMargin(0);
margin=0;
Log.v("", "down");
}
if (downYValue > currentY) {
previousYvalue = 0;
((CompanyInfoActivityNew) getActivity()).setPanelMargin(-230);
margin=-230;
Log.v("", "up");
}
// }
break;
}
case MotionEvent.ACTION_MOVE: {
if (Math.abs(previousYvalue - event.getY()) >2) {
previousYvalue = event.getY();
switch ((int) margin) {
case 0://LinearLayout is visible
if ((event.getY() - downYValue) < 0) {
margin = ((event.getY() - downYValue)) / 2;
((CompanyInfoActivityNew) getActivity()).movePanel(margin);
} else {
v.onTouchEvent(event);
}
break;
case -230://linearLayout is invisible
if ((event.getY() - downYValue) > 0) {
margin = ((event.getY() - downYValue)) / 2;
((CompanyInfoActivityNew) getActivity()).movePanel(margin);
} else {
v.onTouchEvent(event);
}
break;
default:
if ((event.getY() - downYValue)>=-230 &&(event.getY() - downYValue)<=230 ) {
margin = ((event.getY() - downYValue)) / 2;
((CompanyInfoActivityNew) getActivity()).movePanel(margin);
}
break;
}
}
}
}
return true;
}
});
public void movePanel(double margin) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) linearLayout1.getLayoutParams();
int tempMargin = params.topMargin + (int) margin;
if (tempMargin <= 0 && tempMargin >= -210) {
params.setMargins(0, tempMargin, 0, 0);
linearLayout1.setLayoutParams(params);
}
}