显示弹出窗口时设置窗口状态栏颜色

时间:2015-01-30 03:12:44

标签: android android-layout android-5.0-lollipop

有没有办法在显示弹出窗口时设置窗口状态栏颜色?我尝试过使用

window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(color);

但这似乎不适用于Lollipop

1 个答案:

答案 0 :(得分:3)

我在这方面挣扎了好几天,似乎API 21中的一个错误已经在API 22中修复了

为了解决这个问题,我创建了一个PopupWindow,但不是使用MATCH_PARENT作为高度,而是计算了屏幕的高度并减去了状态栏大小的高度。使用此选项,弹出窗口将显示基础活动的状态栏颜色

这是我用过的东西

private void showPopup(View popupView){
    popup = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, getPopupHeight(), false);
    popup.showAtLocation(getView(), Gravity.NO_GRAVITY, 0, 0);
}

private int getPopupHeight() {
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) {
        Display display = getActivity().getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);

        int statusBarHeight = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            statusBarHeight = getResources().getDimensionPixelSize(resourceId);
        }
        return size.y - statusBarHeight;
    } else {
        return ViewGroup.LayoutParams.MATCH_PARENT;
    }
}

我希望它可以帮助其他人可能会遇到这个问题