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

时间:2017-12-05 07:46:39

标签: android android-statusbar

我正在尝试实现更明亮的半透明状态栏,只有状态栏并尝试将导航栏保留为默认状态。

我尝试了一些解决方案(实际上并非按照我想要的方式工作)。

在这一个中,我无法改变半透明的透明度,我试图让它变得更亮。但它没有改变。
http://blog.raffaeu.com/archive/2015/04/11/android-and-the-transparent-status-bar.aspx

另一种选择,我尝试使用全屏主题并将渐变视图放置为与状态相同的高度(这就是我想要的)。但是在这个时候布局延伸到导航和导航背后失去了它的黑色背景。我找不到解决方案。(使它半透明而不是我想要的)

TLDR:我试图通过保持导航作为默认值来获得更明亮的半透明状态。有可能吗?
编辑。 min SDK是20 (抱歉英语不好)

2 个答案:

答案 0 :(得分:2)

是的,这是可能的。

  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"
    
  4. 这就是我用这段代码实现的目标

    sample

    修改

    我调查了这个功能,而不是所有的视图工具fitsSystemWindows,所以并不总是能得到这个结果。

    我建议你阅读thisrepo,并使用带有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>