我正在尝试实现更明亮的半透明状态栏,只有状态栏并尝试将导航栏保留为默认状态。
我尝试了一些解决方案(实际上并非按照我想要的方式工作)。
在这一个中,我无法改变半透明的透明度,我试图让它变得更亮。但它没有改变。
http://blog.raffaeu.com/archive/2015/04/11/android-and-the-transparent-status-bar.aspx
另一种选择,我尝试使用全屏主题并将渐变视图放置为与状态相同的高度(这就是我想要的)。但是在这个时候布局延伸到导航和导航背后失去了它的黑色背景。我找不到解决方案。(使它半透明而不是我想要的)
TLDR:我试图通过保持导航作为默认值来获得更明亮的半透明状态。有可能吗?
编辑。 min SDK是20
(抱歉英语不好)
答案 0 :(得分:2)
是的,这是可能的。
设置半透明状态
<style name="AppThemeTranslucent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
使用以下方式为状态栏设置颜色:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setTrasparentStatusBar() {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(ContextCompat.getColor(this, R.color.status_bar_color));
window.setNavigationBarColor(ContextCompat.getColor(this, android.R.color.black));
}
将此属性添加到根布局
android:fitsSystemWindows="true"
这就是我用这段代码实现的目标
修改强>
我调查了这个功能,而不是所有的视图工具fitsSystemWindows
,所以并不总是能得到这个结果。
我建议你阅读this和repo,并使用带有CoordinatorLayout
marginTop
的样本
答案 1 :(得分:1)
我找到了解决方案here
通过将此一个添加到onCreate()
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
这将这个加入你的风格
<item name="android:statusBarColor">@android:color/transparent</item>