首页 > 解决方案 > 更改android栏的颜色

问题描述

我已经使用 Nativescript Angular 创建了一个应用程序,但是如果我在 Android 中显示了所有正在运行的应用程序,则该栏始终为白色。有谁知道我如何自定义它?例如来自 Gmail 或 Playstore 的那个。如果我可以在应用程序本身中动态调整它以适应用户选择的主题,或者它总是接管操作栏的颜色,那将是最好的。

在此处输入图像描述

编辑:

我发现了如何对颜色进行硬编码-> 在colors.xml文件中更改 ns_primary

但是我没有设法让我的 ActionBar 的颜色被采用。我认为 ActionBar 的颜色将被我的 xml 文件覆盖,但我不知道如何防止它。你知道我必须在我的文件中改变什么来实现这一点吗?

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="__PACKAGE__"
      android:versionCode="10001"
      android:versionName="1.0">

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="__APILEVEL__"/>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:name="com.tns.NativeScriptApplication"
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <activity
        android:name="com.tns.NativeScriptActivity"
        android:label="@string/title_activity_kimera"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:theme="@style/LaunchScreenTheme">

        <meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.tns.ErrorReportActivity"/>
</application>

样式.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

<!-- theme to use FOR launch screen-->
<style name="LaunchScreenThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>

    <item name="colorPrimary">@color/ns_primary</item>
    <item name="colorPrimaryDark">@color/ns_primaryDark</item>
    <item name="colorAccent">@color/ns_accent</item>

    <item name="android:windowBackground">@drawable/splash_screen</item>

    <item name="android:windowActionBarOverlay">true</item>  
    <item name="android:windowTranslucentStatus">true</item>
</style>

<style name="LaunchScreenTheme" parent="LaunchScreenThemeBase">
</style>

<!-- theme to use AFTER launch screen is loaded-->
<style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>

    <item name="colorPrimary">@color/ns_primary</item>
    <item name="colorPrimaryDark">@color/ns_primaryDark</item>
    <item name="colorAccent">@color/ns_accent</item>
</style>

<style name="AppTheme" parent="AppThemeBase">
</style>

<!-- theme for action-bar -->
<style name="NativeScriptToolbarStyleBase" parent="Widget.AppCompat.Toolbar">
    <item name="android:background">@color/ns_primary</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.ActionBar</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat</item>
</style>

<style name="NativeScriptToolbarStyle" parent="NativeScriptToolbarStyleBase">
</style>

颜色.xml

<resources>
    <color name="ns_primary">#F5F5F5</color>
    <color name="ns_primaryDark">#757575</color>
    <color name="ns_accent">#33B5E5</color>
    <color name="ns_blue">#272734</color>
</resources>

标签: androidnativescriptnativescript-angular

解决方案


您可以styles.xml在 App_resources->values中定义主题

<style name="LaunchScreenThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>
    <item name="colorPrimary">@color/ns_primary</item>
    <item name="colorPrimaryDark">@color/ns_primaryDark</item>
    <item name="colorAccent">@color/ns_accent</item>
    <item name="android:windowBackground">@drawable/splash_screen</item>
    <item name="android:windowActionBarOverlay">true</item>

</style>
<style name="LaunchScreenTheme" parent="LaunchScreenThemeBase"></style>
<!-- theme to use AFTER launch screen is loaded-->
<style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>
    <item name="colorPrimary">@color/ns_primary</item>
    <item name="colorPrimaryDark">@color/ns_primaryDark</item>
    <item name="colorAccent">@color/ns_accent</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:fitsSystemWindows">false</item>
</style>

您可以在 App_resources->values->colors.xml 中定义这些颜色

<resources>
<color name="ns_primary">#c66900</color>
<color name="ns_primaryDark">#c66900</color>
<color name="ns_mainbg">#E5E5E8</color>
<color name="ns_accent">#33B5E5</color>
<color name="ns_blue">#2196F3</color>
<color name="ns_transparent">#00000000</color>
<color name="ns_white">#FFFFFF</color>


<color name="ns_color_accent_custom">#4CAF50</color>
<color name="ns_color_primary_custom">#CDDC39</color>
<color name="ns_color_primary_secondary">#AFB42B</color>


推荐阅读