自定义半透明颜色(改变透明度)

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 (抱歉英语不好)

是的,这是可能的。

  1. 设置半透明状态

    <style name="AppThemeTranslucent" parent="Theme.AppCompat.Light.NoActionBar">
          <item name="android:windowTranslucentStatus">true</item>
          <item name="android:windowTranslucentNavigation">true</item>
    </style>
    
  2. 使用以下方法设置状态栏的颜色:

    @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));
    }
    
  3. 将此 属性 添加到您的根布局

    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>