我正在尝试学习如何在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>
答案 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" />