android - SlidingDrawer只占用它需要的空间?

时间:2013-12-13 03:34:02

标签: android slidingdrawer

我正在尝试在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));
}

有人可以帮忙吗?这似乎很容易,但我无法让它发挥作用。

0 个答案:

没有答案