Yo no lo hago con un scroller, son dos viewgroups (content y sidebar) dentro de un relativelayout y tengo un método que las reposiciona llamando a view.layout:
/**
*
* @param pos
* 0->menu hidden 1->menu shown
*/
private void setLayoutPosition(float pos) {
int contentX = (int) (pos * (content.getMeasuredWidth() - buttonWidth));
content.layout(contentX, 0, contentX + content.getMeasuredWidth(), content.getMeasuredHeight());
int menuX = (int) (-buttonWidth * 1.5 * (1 - pos));
sidebar.layout(menuX, 0, menuX + sidebar.getMeasuredWidth(), sidebar.getMeasuredHeight());
}