Android主题更改不会可靠地更改

时间:2016-10-06 02:39:40

标签: android android-theme android-styles

我正在尝试学习如何在Android中编辑自定义应用主题。

但由于某种原因,我的styles.xml(手动和使用主题编辑器)的更改以不可靠的零星方式反映在我的设备上。这种行为令人困惑。

就像我昨晚做了50次构建,清理,重建等尝试获取选项菜单项文本来改变颜色而它不会。然后今天它改变了......我不知道为什么。

我尝试更改主背景颜色,但不会改变。然后在构建之后突然将optionmenu背景颜色更改为我将主背景颜色设置为的颜色。

我在这个问题上找不到任何可靠或可重复的东西。

主题变化对我来说不起作用,当他们这样做的时候是零星的。

我已禁用即时运行和已卸载的应用,以及已清理,重建和制作的项目。这些行动都不会影响主题变化是否会持续。

我的v11,v14和v21 styles.xml为空,我只修改了主要的styles.xml。

styles.xml

<resources>

<style name="AppBaseTheme" parent="android:Theme.Material">
    <!--
    Theme customizations available in newer API levels can go in
    res/values-vXX/styles.xml, while customizations related to
    backward-compatibility can go here.
    -->
    <item name="android:colorBackground">@color/black</item>
    <item name="android:colorForeground">@color/common_signin_btn_dark_text_pressed</item>
    <item name="android:textColorPrimary">@color/text_color_primary</item>
    <item name="android:textColorSecondary">@color/text_color_secondary</item>
    <item name="android:textColorSecondaryInverse">@color/text_color_inverse</item>
    <item name="android:textColor">@color/text_color_primary</item>
    <item name="android:itemTextAppearance">@style/MenuItemTextAppearance</item>
    <item name="android:dialogTheme">@style/DialogTheme</item>
</style>

<style name="MenuItemTextAppearance">
    <item name="android:textColor">#000000</item>
</style>

<style name="DialogTheme" parent="android:Theme.Material.Dialog.Alert">
    <item name="android:colorBackground">@color/background</item>
</style>

androidmanifest

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.me.myapp"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21"/>

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

    <application
        android:name=".LocalApp"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppBaseTheme">
        <activity
            android:name=".ActMain"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity
            android:name=".ActExport"
            android:label="@string/title_activity_export"
            android:windowSoftInputMode="stateAlwaysVisible">
        </activity>
        <!--
             ATTENTION: This was auto-generated to add Google Play services to your project for
             App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information.
        -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>

        <activity
            android:name=".ActSaveFile"
            android:label="@string/title_activity_act_save_file">
        </activity>
        <activity
            android:name=".ActLoadFile"
            android:label="@string/title_activity_act_load_file">
        </activity>
    </application>

</manifest>

2 个答案:

答案 0 :(得分:0)

你的风格AppBasteTheme从android:Theme.Material扩展只支持21 sdk以上你的最小sdk级别是15这个很小。而不是这个使用这种风格工作正常。

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
<item name="android:colorBackground">@color/black</item>
<item name="android:colorForeground">@color/common_signin_btn_dark_text_pressed</item>
<item name="android:textColorPrimary">@color/text_color_primary</item>
<item name="android:textColorSecondary">@color/text_color_secondary</item>
<item name="android:textColorSecondaryInverse">@color/text_color_inverse</item>
<item name="android:textColor">@color/text_color_primary</item>
<item name="android:itemTextAppearance">@style/MenuItemTextAppearance</item>
<item name="android:dialogTheme">@style/DialogTheme</item>

答案 1 :(得分:0)

你必须这样写,你错过了其他风格。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />