无法将状态栏颜色更改为半透明黑色 [重复]
Posted
技术标签:
【中文标题】无法将状态栏颜色更改为半透明黑色 [重复]【英文标题】:Can't change status bar colour to translucent black [duplicate] 【发布时间】:2018-06-28 11:53:10 【问题描述】:我正在尝试将状态栏颜色更改为半透明黑色(android 7.0),但我得到的只是一个灰色状态栏。每当我尝试将状态栏设置为透明或半透明时,我都会得到这种灰色。但是纯色效果很好。 我正在使用折叠工具栏布局,我知道我可以使用 statusBarScrim,但是这个功能也不起作用,我不知道为什么。
输出:
XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#d8000000"
android:fitsSystemWindows="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_artistSong"
android:layout_
android:layout_
android:scrollbars="vertical"
android:scrollbarSize="10dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v7.widget.RecyclerView>
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_
android:layout_
android:fitsSystemWindows="true"
>
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapse_toolbar"
android:layout_
android:layout_
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="#b2000000"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp">
<ImageView
android:id="@+id/parallaxImage"
android:layout_
android:layout_
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
app:layout_scrollFlags="scroll|enterAlways"
>
<ImageView
android:id="@+id/backToArtist"
android:layout_
android:layout_
android:src="@drawable/ic_action_name"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:clickable="true"
/>
</android.support.v7.widget.Toolbar>
<RelativeLayout
android:layout_
android:layout_
android:paddingTop="10dp"
android:background="#b2000000"
android:layout_gravity="bottom"
android:fitsSystemWindows="true">
<ImageView
android:id="@+id/backToArtist2"
android:layout_
android:layout_
android:src="@drawable/ic_action_name"
android:paddingLeft="10dp"
android:paddingTop="20dp"
/>
<TextView
android:id="@+id/parallaxText"
android:layout_
android:layout_
android:paddingLeft="60dp"
android:textSize="24sp"
android:text="Hello"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="top"
/>
<LinearLayout
android:layout_below="@+id/parallaxText"
android:layout_
android:layout_
android:layout_gravity="bottom"
android:paddingTop="10dp"
>
<TextView
android:id="@+id/NumAlbums"
android:layout_
android:layout_
android:textColor="#fff"
android:paddingLeft="60dp"
android:text="@string/albums"
/>
<TextView
android:id="@+id/NumTracks"
android:layout_
android:layout_
android:text="@string/tracks"
android:textColor="#fff"
android:paddingLeft="100dp"/>
</LinearLayout>
</RelativeLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
样式:
<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#b2000000</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
也尝试过使用这些:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
window.setStatusBarColor(getResources().getColor(R.color.translucent_black2));
【问题讨论】:
你能把你想要设置的颜色和你得到的输出一起发布吗? 我要设置的颜色是“#b2000000”,输出是灰色。 嗨***.com/users/8745264/rektirino你能在下面试试我的回答吗 如果您使用类似的 Gary 颜色 #b2000000 则输出获取灰色使用差异。颜色并检查它 【参考方案1】:请使用这个主题
<style name="ThemeFullscreen" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
【讨论】:
【参考方案2】:你可以试试这个:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
getWindow().setStatusBarColor(ContextCompat.getColor(MainActivity.this, R.color.translucent_black2));
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
希望这对您有所帮助...如果您需要任何帮助,您可以询问
【讨论】:
无变化,结果相同 @Rektirino 我已将此代码用于 7.0 版,效果很好 是的!它变成灰色。 @Rektirino 不,这不可能你能看到我屏幕短吗? 请显示屏幕截图以上是关于无法将状态栏颜色更改为半透明黑色 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
带有黑色半透明状态栏的 iPhone 上的 Web 应用程序:视口高度似乎是错误的