我正在尝试在android中进行系统覆盖,以便另一个视图可以从侧面滑入。
然而,问题是SlidingDrawer总是填满屏幕以使其工作。例如,如果我将其设置为 wrap_content ,它将无法工作,因为滑动抽屉实际上不显示,直到按钮开始滑动,但由于按钮已经填满了整个视图,它没有空间可以滑动。
以下是一些图片(白色部分是RelativeLayout,黑色是手柄,蓝色是抽屉):
WRAP_CONTENT:http://i.imgur.com/mQUYn.png
MATCH_PARENT:http://i.imgur.com/512jiOY.png
我尝试设置一个OnTouchListener,这样当用户触摸句柄时,SlidingDrawer将设置为MATCH_PARENT,但它不起作用:
handle.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
slidingdrawer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
return true;
}
return false;
}
});
这是代码的另一部分:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
onTouchEvent_Press(event);
} else if (event.getActionMasked() == MotionEvent.ACTION_UP) {
onTouchEvent_Up(event);
} else if (event.getActionMasked() == MotionEvent.ACTION_MOVE) {
onTouchEvent_Move(event);
}
return super.onTouchEvent(event);
}
@Override
protected void onTouchEvent_Up(MotionEvent event) {
if (!slidingdrawer.isOpened())
{
slidingdrawer.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
else{
slidingdrawer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}
}
@Override
protected void onTouchEvent_Press(MotionEvent event) {
slidingdrawer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}
有人可以帮忙吗?这似乎很容易,但我无法让它发挥作用。