【发布时间】:2017-12-13 05:05:23
【问题描述】:
我正在尝试在我的 android 应用程序中将 Gradient 颜色设置为状态栏。对于 Activity,我将代码放在 BaseActivity 中。它工作正常。
public void setStatusBarColor()
{
try
{
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
Drawable background = this.getResources().getDrawable(R.drawable.gradient);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(this.getResources().getColor(R.color.transparent));
window.setNavigationBarColor(this.getResources().getColor(R.color.transparent));
window.setBackgroundDrawable(background);
}
}
catch (Exception ex)
{
GSLogger.e(ex);
}
}
现在,我想对Fragment 应用相同的渐变色。我有一个导航抽屉,里面有将近 8 个fragments。我想将这种渐变颜色应用到那里的状态栏。在BaseFragment 中应用了相同的上述代码。它不影响任何颜色。但是,当我应用单色代码时,它工作正常。这是下面的代码。
public void setStatusBarColor()
{
try
{
Window window = getActivity().getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(getResources().getColor(R.color.black));
}
}
catch (Exception ex)
{
GSLogger.e(ex);
}
}
这可能是什么问题?我无法将渐变颜色应用于片段。但同样的代码对 Activity 也能正常工作。
我们将不胜感激。
【问题讨论】:
标签: android android-fragments statusbar