Hey besten practive tha NavigationDrawer
zu verwenden wäre, aber für Ihr Problem eine Klasse CustomSlidingMenu
schaffen, die SlidingMenu
und Aufschalten Methoden wie diese erstreckt. Dann nutzen Sie die CustomSlidingMenu
statt SlidingMenu
und es sollte funktionieren
public class CustomSlidingMenu extends SlidingMenu {
private boolean mActionbarOverlay = false;
public CustomSlidingMenu(Context context) {
super(context);
}
public CustomSlidingMenu(Activity activity, int slideStyle) {
super(activity, slideStyle);
}
public CustomSlidingMenu(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomSlidingMenu(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@SuppressLint("NewApi")
@Override
protected boolean fitSystemWindows(Rect insets) {
if (mActionbarOverlay) return true;
setMyPadding(insets);
return true;
}
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
@Override
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
if (mActionbarOverlay) return insets.consumeSystemWindowInsets();
Rect rect = new Rect(
insets.getSystemWindowInsetLeft(),
insets.getSystemWindowInsetTop(),
insets.getSystemWindowInsetRight(),
insets.getSystemWindowInsetBottom()
);
setMyPadding(rect);
return insets.consumeSystemWindowInsets();
}
private void setMyPadding(Rect rect) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
switch (manager.getDefaultDisplay().getRotation()) {
case Surface.ROTATION_90:
case Surface.ROTATION_270:
rect.right += getNavBarWidth();
break;
case Surface.ROTATION_180:
rect.top += getNavBarHeight();
break;
default:
rect.bottom += getNavBarHeight();
}
}
setPadding(
rect.left, rect.top, rect.right, rect.bottom
);
}
private int getNavBarWidth() {
return getNavBarDimen("navigation_bar_width");
}
private int getNavBarHeight() {
return getNavBarDimen("navigation_bar_height");
}
private int getNavBarDimen(String resourceString) {
Resources r = getResources();
int id = r.getIdentifier(resourceString, "dimen", "android");
if (id > 0) {
return r.getDimensionPixelSize(id);
} else {
return 0;
}
}
}
Ich gehe davon aus, dass Sie AppCompat
mit meinem Ansatz verwenden, so ist der Grund, dass die eingestellte Polsterungen von der SlidingMenu
sind in Konflikt mit den AppCompat
Konfigurationen und Überschreiben sie.
Bitte posten Sie Ihre XML. –