diff --git a/library/res/values/attrs.xml b/library/res/values/attrs.xml
index d5ee00f32..362efec54 100644
--- a/library/res/values/attrs.xml
+++ b/library/res/values/attrs.xml
@@ -36,6 +36,7 @@
+
diff --git a/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewAbove.java b/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewAbove.java
index 42b2973d2..5b97bea8c 100644
--- a/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewAbove.java
+++ b/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewAbove.java
@@ -829,7 +829,7 @@ protected float getPercentOpen() {
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
// Draw the margin drawable if needed.
- mViewBehind.drawShadow(mContent, canvas);
+ mViewBehind.drawShadow(mContent, canvas, getPercentOpen());
mViewBehind.drawFade(mContent, canvas, getPercentOpen());
mViewBehind.drawSelector(mContent, canvas, getPercentOpen());
}
diff --git a/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewBehind.java b/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewBehind.java
index fa0544d5b..4e1b3f7e4 100644
--- a/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewBehind.java
+++ b/library/src/com/jeremyfeinstein/slidingmenu/lib/CustomViewBehind.java
@@ -30,6 +30,7 @@ public class CustomViewBehind extends ViewGroup {
private int mWidthOffset;
private CanvasTransformer mTransformer;
private boolean mChildrenEnabled;
+ private boolean mShadowOutside;
public CustomViewBehind(Context context) {
this(context, null);
@@ -190,6 +191,12 @@ public void setShadowWidth(int width) {
mShadowWidth = width;
invalidate();
}
+
+ public void setShadowOutside(boolean b) {
+ mShadowOutside = b;
+ invalidate();
+ }
+
public void setFadeEnabled(boolean b) {
mFadeEnabled = b;
@@ -340,20 +347,29 @@ public boolean menuOpenSlideAllowed(float dx) {
return false;
}
- public void drawShadow(View content, Canvas canvas) {
+ public void drawShadow(View content, Canvas canvas, float openPercent) {
if (mShadowDrawable == null || mShadowWidth <= 0) return;
+ if (mShadowOutside && openPercent<0.1) return;
int left = 0;
- if (mMode == SlidingMenu.LEFT) {
- left = content.getLeft() - mShadowWidth;
- } else if (mMode == SlidingMenu.RIGHT) {
+ if (mMode == SlidingMenu.LEFT) {
+ left = content.getLeft();
+ if(!mShadowOutside)
+ left-=mShadowWidth;
+ } else if (mMode == SlidingMenu.RIGHT) {
left = content.getRight();
+ if(mShadowOutside)
+ left-= mShadowWidth;
} else if (mMode == SlidingMenu.LEFT_RIGHT) {
if (mSecondaryShadowDrawable != null) {
left = content.getRight();
+ if(mShadowOutside)
+ left-= mShadowWidth;
mSecondaryShadowDrawable.setBounds(left, 0, left + mShadowWidth, getHeight());
mSecondaryShadowDrawable.draw(canvas);
- }
- left = content.getLeft() - mShadowWidth;
+ }
+ left = content.getLeft();
+ if(!mShadowOutside)
+ left-=mShadowWidth;
}
mShadowDrawable.setBounds(left, 0, left + mShadowWidth, getHeight());
mShadowDrawable.draw(canvas);
diff --git a/library/src/com/jeremyfeinstein/slidingmenu/lib/SlidingMenu.java b/library/src/com/jeremyfeinstein/slidingmenu/lib/SlidingMenu.java
index b4483635f..ca54f5a23 100644
--- a/library/src/com/jeremyfeinstein/slidingmenu/lib/SlidingMenu.java
+++ b/library/src/com/jeremyfeinstein/slidingmenu/lib/SlidingMenu.java
@@ -270,6 +270,8 @@ else if (widthBehind != -1)
}
int shadowWidth = (int) ta.getDimension(R.styleable.SlidingMenu_shadowWidth, 0);
setShadowWidth(shadowWidth);
+ boolean shadowOutside = (boolean) ta.getBoolean(R.styleable.SlidingMenu_shadowOutside, false);
+ setShadowOutside(shadowOutside);
boolean fadeEnabled = ta.getBoolean(R.styleable.SlidingMenu_fadeEnabled, true);
setFadeEnabled(fadeEnabled);
float fadeDeg = ta.getFloat(R.styleable.SlidingMenu_fadeDegree, 0.33f);
@@ -792,6 +794,15 @@ public void setShadowWidthRes(int resId) {
public void setShadowWidth(int pixels) {
mViewBehind.setShadowWidth(pixels);
}
+
+ /**
+ * Sets the to be drawn on outside below view.
+ *
+ * @param b true to enable outside shadow, false to disable it
+ */
+ public void setShadowOutside(boolean b) {
+ mViewBehind.setShadowOutside(b);
+ }
/**
* Enables or disables the SlidingMenu's fade in and out