我使用SlidingMenu来实现我的滑入式菜单。

该代码是



然后我有一个问题是导航栏后面的布局。

我将SlidingMenu.SLIDING_WINDOW更改为SlidingMenu.SLIDING_CONTENT。
可以,但是操作栏始终位于顶部。

看一下SlidingMenu的源代码,我发现此代码添加了slidemenu。

    switch (slideStyle) {
    case SLIDING_WINDOW:
        mActionbarOverlay = false;
        ViewGroup decor = (ViewGroup) activity.getWindow().getDecorView();
        ViewGroup decorChild = (ViewGroup) decor.getChildAt(0);
        // save ActionBar themes that have transparent assets
        decorChild.setBackgroundResource(background);
        decor.removeView(decorChild);
        decor.addView(this);
        setContent(decorChild);
        break;
    case SLIDING_CONTENT:
        mActionbarOverlay = actionbarOverlay;
        // take the above view out of
        ViewGroup contentParent = (ViewGroup)activity.findViewById(android.R.id.content);
        View content = contentParent.getChildAt(0);
        contentParent.removeView(content);
        contentParent.addView(this);
        setContent(content);
        // save people from having transparent backgrounds
        if (content.getBackground() == null)
            content.setBackgroundResource(background);
        break;
    }

我该如何解决?
仅在Android 5.0 Lollipop 中发现此错误。

最佳答案

GitHub上的SlidingMenu已打开相同的issue

private int getNavigationBarHeight() {
    Resources resources = getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0) {
        return resources.getDimensionPixelSize(resourceId);
    }
    return 0;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        int navBarHeight = getNavigationBarHeight();
        findViewById(R.id.base_frame).setPadding(0, 0, 0, navBarHeight);
        findViewById(R.id.menu_frame).setPadding(0, 0, 0, navBarHeight);
    }
}

关于android-activity - getDecorView方法的返回 View 包括 Lollipop 上的导航栏 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27165690/

10-08 23:55