我正在构建一个Android应用程序,现在我想更改状态栏(屏幕顶部显示无线和区域信号,电池状态等),但它无法正常工作。
在XML文件的预览中,它显示了不同的颜色(我想要使用的橙色阴影),但是当我在模拟器和手机上运行应用程序时,颜色保持白色。
隐藏操作栏并在应用程序顶部放置灰色图像。
这是Android Studio中XML文件的预览
这是应用程序的仿真:
这是我的colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="theme_color">#D8540D</color>
<color name="toolbar_title_color">#E66800</color>
<color name="grey">#d3d3d3</color>
<color name="maroon">#7f0000</color>
<color name="color_textual">#8D5020</color>
<color name="chef_bg_color">#F7F7F7</color>
<color name="line_color">#dddddd</color>
</resources>
这是我的styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:statusBarColor">@color/theme_color</item>
<item name="android:navigationBarColor">@color/theme_color</item>
<item name="android:colorEdgeEffect">@color/theme_color</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
Android Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mvaguimaraes.bt">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainScreen"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity android:name=".OrderDetails"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity android:name=".PastOrderDetails"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
</application>
</manifest>
答案 0 :(得分:5)
在您指定主题为 NoActionBar 的所有活动的清单文件中。
但是在 NoActionBar 主题中的styles.xml中,您还没有在代码行下面添加:
<item name="android:statusBarColor">@color/theme_color</item>
在 NoActionBar 主题的样式中添加以上代码行,然后状态栏的颜色肯定会更改。
但是,它适用于api 21级及以上。
答案 1 :(得分:1)
在KitKat状态栏中,颜色不会改变,但你可以在Lollipop和Marshmallow中看到它的变化。
在“res / values / colors”中
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
在kitkat之后,“colorPrimaryDark”将应用于状态栏,“colourPrimary”将自动用于工具栏/操作栏。
可能是此链接有助于https://developer.android.com/training/material/theme.html
答案 2 :(得分:1)
您可以使用以下几行更改状态栏颜色:
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.parseColor("#your color"));
答案 3 :(得分:0)
如果你使用 DrawerLayout 你可以使用下面的方法
drawerLayout.setStatusBarBackground(R.color.status)