이 영역을 변경할 수 있는 api가 공식적으로는 없는데 아래와 같은 방법으로 하면 변경할 수 있습니다.
아래 코드의 edge 의 값을 변경 하면 됩니다.
int edge = 30;
private void setDrawerLayoutMargin() {
java.lang.reflect.Field leftDragger = null;
java.lang.reflect.Field rightDragger = null;
try {
leftDragger = mDrawerLayout.getClass().getDeclaredField("mLeftDragger");
rightDragger = mDrawerLayout.getClass().getDeclaredField("mRightDragger");
} catch (NoSuchFieldException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
leftDragger.setAccessible(true);
rightDragger.setAccessible(true);
ViewDragHelper leftDraggerObj = null;
ViewDragHelper rightDraggerObj = null;
try {
leftDraggerObj = (ViewDragHelper) leftDragger.get(mDrawerLayout);
rightDraggerObj = (ViewDragHelper) rightDragger.get(mDrawerLayout);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
java.lang.reflect.Field leftEdgeSize = null;
java.lang.reflect.Field rightEdgeSize = null;
try {
leftEdgeSize = leftDraggerObj.getClass().getDeclaredField("mEdgeSize");
rightEdgeSize = rightDraggerObj.getClass().getDeclaredField("mEdgeSize");
} catch (NoSuchFieldException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
leftEdgeSize.setAccessible(true);
rightEdgeSize.setAccessible(true);
int edge = 30;
try {
leftEdgeSize.setInt(leftDraggerObj, edge * 1);
rightEdgeSize.setInt(rightDraggerObj, edge * 1);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}