我非常熟悉Android的布局,您可以在清单中或通过样式资源(如"Halo"或"Material"等)间接声明应用程序范围的主题.。
我也知道,样式可以在每个布局的基础上完成。Android“布局编辑器”甚至允许您为布局选择一个主题。
问题:
每个布局应用时,所选主题存储在哪里?
Android文档似乎暗示它在声明活动的清单中。例如:
<activity android:name=".MainMenu" `android:theme="@android:style/Theme.Holo.NoActionBar"/>`但是,当我选择不同的主题时,即使在编译和运行应用程序之后,我也不会看到清单、相应的布局或活动子类中的任何更改。
那么布局与被存储的主题之间的关联在哪里呢?
发布于 2018-03-21 19:49:05
我相信这个问题的答案是,Android在预览中选择布局时不会修改任何内容,它只是预览,仅此而已。
要进行更改,必须手动编辑清单中活动条目的主题。
发布于 2016-12-24 01:15:07
tl;博士
AndroidManifest.xml引用styles.xml,后者依次引用colors.xml。布局编辑器修改styles.xml,您不会看到结果,因为可能会在styles.xml中重写。
-修改styles.xml中的父样式并删除内部不必要的重写。--
在调查了这个问题之后,我也遇到了这个问题,下面是我得出的结论:
从一个新的“空活动”开始,您将在AndroidManifest.xml文件中看到以下内容:android:theme="@style/AppTheme"。这与您当前活动的“设计视图”中Layout Editor中的更改没有直接关系。
AndroidManifest.xml
在主题定义上盘旋,您将在下面这样做:

styles.xml
点击它将带我们到styles.xml。默认情况下,您将看到以下内容:

这就是在AppTheme中引用的AndroidManifest.xml的来源。正如您所看到的,Theme.AppCompat.Light.DarkActionBar是父样式,如果您想要更改整个主题,则需要修改它,例如"@android:style/Theme.Material"或"@android:style/Theme.Holo"。
值得注意的是,只要覆盖颜色仍然存在,您将不会注意到,当应用程序启动时,即使变化确实通过。
要看到这些变化,请注意以下几行:
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>删去或评论:
<!-- <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>-->主题版面编辑器
出于某种原因,AndroidStudio2.2取消了布局上的刷新按钮,在更新样式方面造成了许多困难。
暂时,手动重写styles.xml中的父样式,并删除从colors.xml导入的任何重写。不太理想,但这是个解决办法。
有关主题的完整列表,您可以检查这个developer R.style链接,或者单击Open Editor获取不同主题的可视化表示。

它显示以下内容:

https://stackoverflow.com/questions/39198976
复制相似问题