更改状态栏的颜色时,我遇到了一个很大的安静问题。
我正在使用的设备告诉我android 5.1,但是像windowTranslucentStatus
或android:colorPrimaryDark
或android:statusBarColor
这样的人员根本不起作用(半透明的像素有20%的黑暗透明度)和其他任何东西不起作用。
所以看来这是android 5.0下的东西。
因此,我尝试了一些应用程序-之所以起作用,是因为它们在旧的应用程序之前创建了自己的状态栏。但第一件事是我不会使用其他应用程序,第二件事是该应用程序无法执行我在项目中使用的动画通知
所以我做了一个按钮,状态栏前有我的颜色,但是现在我需要在其中添加所有图标。 (我只需要wifi,蓝牙,电池,时间。)就是这样,但我发现这很难。
所以现在我有点困惑,没有人知道hack如何更改该颜色或如何以某种方式复制通知图标吗?我不需要滑动通知栏,只需要看到它即可。
答案 0 :(得分:1)
您可以在selected="{= ${modelName>/boolvalues}.split(',')[0] === 'X' }
中的活动或应用主题中对其进行设置,例如
androidMenifest.xml
在<activity
android:theme="@style/activityTheme"
android:name=".MyActivity"
android:screenOrientation="portrait" />
style.xml
<style name="activityTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
是活动的状态栏颜色
如果您想按语法进行更改,则可以使用以下代码
活动
colorPrimaryDark
用于片段
Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.statusBarColor = ContextCompat.getColor(this, R.color.YOUR_COLOR)
}
Java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.COLOR));
}
答案 1 :(得分:0)
清单
<application android:name="com.smartpos.pocket.app.PocketApplication" android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:allowBackup="true" android:theme="@style/AppTheme">
<activity android:name="com.smartpos.pocket.activity.impl.StartUpActivity" android:theme="@style/AppTheme">
样式(我在API 17中有项目)
<style name="AppTheme" parent="AppCompat">
</style>
样式v21
<style name="AppCompat" parent="Theme.AppCompat">
<item name="colorAccent">@color/color_red_real</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="colorPrimary">@color/color_red_real</item>
<item name="colorPrimaryDark">@color/color_red_real</item>
</style>
状态栏不会更改任何东西,我认为该设备是一个更大的组件,并且没有android 5.1或我不知道...
答案 2 :(得分:0)
它可以更改... mabie,因为Theme.AppCompat是暗的,而Theme.AppCompat.Light.DarkActionBar是亮的
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/color_red_real</item>
<item name="colorPrimaryDark">@color/color_red_real</item>
<item name="colorAccent">@color/color_red_real</item>
</style>[![enter image description here][1]][1]
<style name="AppTheme" parent="Theme.AppCompat">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/color_red_real</item>
<item name="colorPrimaryDark">@color/color_red_real</item>
<item name="colorAccent">@color/color_red_real</item>
</style>
答案 3 :(得分:0)
所以最后一件事是,它确实起作用,这只是一个代码错误,不会在状态栏阴影后面留下……不知道为什么,但是,这对我来说是解决方案……我用红色背景制作样式……并且在所有屏幕(布局)上,我从边缘到边缘的所有布局后面都添加了...所以我的背景现在是这种布局...而真正的背景仅用于状态栏...
像TranslucentStatus这样的解决方案以及颜色很少的布局确实在状态栏后面留下了阴影,所以我永远无法获得我需要的那种颜色...而像statusbarcolor或primarydarkcolor这样的解决方案无法通过编程方式或样式无法使用...所以如果有这个问题,你可以做这个丑陋的解决方案...但它肯定可以工作...
非常感谢@Muhammad Muzammil Sharif没有他,我将永远无法做到这一点……(我公司的3个人试图整周都这样做)
这是最后的决定...现在我想隐藏一些提示系统通知...但是我认为不可能...再次感谢大家
因此,在您所有的Java活动中,您都需要这样做:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
,在您的styles.xml中,您需要设置背景颜色(该颜色将成为您的状态栏颜色):
<style name="AppCompat" parent="Theme.AppCompat">
<item name="android:colorBackground">@color/YOUR_STATUS_BAR_COLOR</item>
</style>
在所有布局中,您需要添加将作为背景的布局:
<LinearLayout
android:background="@color/YOUR_BACKGROUND_COLOR"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
/>
当然,如果您想使用@ color / just name ...,则需要在colors.xml中进行设置:
<color name="YOUR_STATUS_BAR_COLOR">#cf031c</color>
<color name="YOUR_BACKGROUND_COLOR">#383838</color>