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));
}
Кто-нибудь может помочь? Это кажется таким простым, но я просто не могу заставить его работать.