Android Studio - 布局主题选择 -- 此数据存储在哪里?
Android Studio - Layout Theme Selection -- Where is this data stored?
我非常熟悉 Android 布局以及您可以在清单中或间接通过 "Halo"
或 "Material"
等样式资源声明应用范围主题这一事实等等……
我也知道样式可以在每个布局的基础上完成。 Android Studio "Layout Editor" 甚至允许您 select 为布局设计一个主题。
问题:
按布局应用时 selected 主题存储在哪里?
Android Documentation 似乎表明它在声明活动的清单中。例如:
<activity android:name=".MainMenu" `android:theme="@android:style/Theme.Holo.NoActionBar"/>`
然而,当我 select 一个不同的主题时,即使在我编译和 运行 应用程序之后,我也没有看到清单或相应布局或 Activity 子class。
那么布局和为其存储的所选主题之间的关联在哪里?
tl;dr
AndroidManifest.xml
引用 styles.xml
,后者又引用 colors.xml
。布局编辑器修改 styles.xml
,您 未 看到结果,因为 styles.xml
.
中可能有覆盖
-- 修改 styles.xml
中的父样式并删除其中不需要的覆盖。 --
在调查了这个问题之后,我也遇到了这个问题,这是我得出的结论:
从新的 "Empty Activity" 开始,您将在 AndroidManifest.xml
文件中看到以下内容:android:theme="@style/AppTheme"
。这与您当前 activity 的 "Design View" 中 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>-->
主题布局编辑器
出于某种原因 Android Studio 2.2 去掉了布局上的刷新按钮,导致样式更新时遇到很多困难。
目前,手动覆盖 styles.xml
中的父样式并删除从 colors.xml
导入的任何覆盖。不理想,但这是一个解决方案。
有关主题的完整列表,您可以查看此开发人员 R.style link 或单击 Open Editor
以直观地显示不同的主题。
显示以下内容:
我相信这个问题的答案是 Android 当您在预览中 select 布局时,Studio 当前不会修改任何内容,它只是预览而已。
要进行更改,必须手动编辑清单中 activity 条目的主题。
我非常熟悉 Android 布局以及您可以在清单中或间接通过 "Halo"
或 "Material"
等样式资源声明应用范围主题这一事实等等……
我也知道样式可以在每个布局的基础上完成。 Android Studio "Layout Editor" 甚至允许您 select 为布局设计一个主题。
问题:
按布局应用时 selected 主题存储在哪里?
Android Documentation 似乎表明它在声明活动的清单中。例如:
<activity android:name=".MainMenu" `android:theme="@android:style/Theme.Holo.NoActionBar"/>`
然而,当我 select 一个不同的主题时,即使在我编译和 运行 应用程序之后,我也没有看到清单或相应布局或 Activity 子class。
那么布局和为其存储的所选主题之间的关联在哪里?
tl;dr
AndroidManifest.xml
引用 styles.xml
,后者又引用 colors.xml
。布局编辑器修改 styles.xml
,您 未 看到结果,因为 styles.xml
.
-- 修改 styles.xml
中的父样式并删除其中不需要的覆盖。 --
在调查了这个问题之后,我也遇到了这个问题,这是我得出的结论:
从新的 "Empty Activity" 开始,您将在 AndroidManifest.xml
文件中看到以下内容:android:theme="@style/AppTheme"
。这与您当前 activity 的 "Design View" 中 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>-->
主题布局编辑器
出于某种原因 Android Studio 2.2 去掉了布局上的刷新按钮,导致样式更新时遇到很多困难。
目前,手动覆盖 styles.xml
中的父样式并删除从 colors.xml
导入的任何覆盖。不理想,但这是一个解决方案。
有关主题的完整列表,您可以查看此开发人员 R.style link 或单击 Open Editor
以直观地显示不同的主题。
显示以下内容:
我相信这个问题的答案是 Android 当您在预览中 select 布局时,Studio 当前不会修改任何内容,它只是预览而已。
要进行更改,必须手动编辑清单中 activity 条目的主题。