自定义半透明颜色(改变透明度)
Custom Translucent Color (changing transparency)
我正在尝试实现更亮的半透明状态栏,只有状态栏并尝试将导航栏保留为默认值。
我尝试了一些解决方案(实际上没有一个像我想要的那样工作)。
在这个我无法改变半透明的透明度,我试图变得更亮one.But它没有改变。
http://blog.raffaeu.com/archive/2015/04/11/android-and-the-transparent-status-bar.aspx
另一个选项,我尝试使用全屏主题并放置一个与状态相同高度的渐变视图(这就是我想要的)。但是此时布局延伸到导航后面,导航失去了它的黑色 background.I 找不到解决方案。(让它半透明不是我想要的)
TLDR:我试图通过将导航保持为默认设置来获得更亮的半透明状态。可能吗?
编辑。最小 SDK 为 20
(抱歉英语不好)
是的,这是可能的。
设置半透明状态
<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
所以你并不总是能得到这个结果。
我建议您使用 CoordinatorLayout
和负数 marginTop
的示例阅读 this and here a repo
我找到了解决方案
通过将这个添加到 onCreate()
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
并将其添加到您的风格中
<item name="android:statusBarColor">@android:color/transparent</item>
我正在尝试实现更亮的半透明状态栏,只有状态栏并尝试将导航栏保留为默认值。
我尝试了一些解决方案(实际上没有一个像我想要的那样工作)。
在这个我无法改变半透明的透明度,我试图变得更亮one.But它没有改变。
http://blog.raffaeu.com/archive/2015/04/11/android-and-the-transparent-status-bar.aspx
另一个选项,我尝试使用全屏主题并放置一个与状态相同高度的渐变视图(这就是我想要的)。但是此时布局延伸到导航后面,导航失去了它的黑色 background.I 找不到解决方案。(让它半透明不是我想要的)
TLDR:我试图通过将导航保持为默认设置来获得更亮的半透明状态。可能吗?
编辑。最小 SDK 为 20
(抱歉英语不好)
是的,这是可能的。
设置半透明状态
<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
所以你并不总是能得到这个结果。
我建议您使用 CoordinatorLayout
和负数 marginTop
我找到了解决方案
通过将这个添加到 onCreate()
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
并将其添加到您的风格中
<item name="android:statusBarColor">@android:color/transparent</item>