styles.xml
我可以知道和有什么区别themes.xml
吗?对我来说,它们只是看起来相同,因为两个 XML 格式相同。
<style name="...
<item name="...
那么,在我提供自定义颜色、大小、可绘制的应用程序中……我是否也需要styles.xml
两者themes.xml
?我应该如何决定将哪个 XML 放入哪个文件?
styles.xml
我可以知道和有什么区别themes.xml
吗?对我来说,它们只是看起来相同,因为两个 XML 格式相同。
<style name="...
<item name="...
那么,在我提供自定义颜色、大小、可绘制的应用程序中……我是否也需要styles.xml
两者themes.xml
?我应该如何决定将哪个 XML 放入哪个文件?
出了整页的Styles 和 Themes。您可能正在寻找这条线。
当您将样式应用于布局中的单个视图时,样式定义的属性仅应用于该视图。如果将样式应用于 ViewGroup,子 View 元素将不会继承样式属性——只有您直接应用该样式的元素才会应用其属性。但是,您可以通过将样式应用为主题来应用样式,使其适用于所有 View 元素。
当您应用为主题时,它会更改范围内的所有内容,具体取决于您将其应用于 Activity 还是 Application。风格更“本地化”。
引用自 Android API 指南:
要创建一组样式,请将 XML 文件保存在
res/values/
项目目录中。XML 文件的名称是任意的,但必须使用.xml
扩展名并保存在res/values/
文件夹中。XML 文件的根节点必须是<resources>
.
所以我想如果你把任何样式放在任何文件中并不重要,只要它是一个位于res/values/
文件夹中的 xml 文件。
正如许多答案所表明的那样,styles.xml 和 theme.xml 之间没有功能差异。
值得注意的是,Google 的 iosched2014 应用程序只有一个 styles.xml(没有 theme.xml)。
取自样式和主题文档,在定义样式部分:
要创建一组样式,请将 XML 文件保存在项目的 res/values/ 目录中。XML 文件的名称是任意的,但必须使用 .xml 扩展名并保存在 res/values/ 文件夹中。
The root node of the XML file must be <resources>.
我只是意识到,例如工具栏文本颜色进入主题声明,而其他方面进入样式声明
<style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.Light">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
<style name="ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="android:background">@color/colorPrimary</item>
</style>
并在工具栏声明中
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ToolbarStyle"
android:theme="@style/ToolbarTheme">
</android.support.v7.widget.Toolbar>
我试图通过将其项目移动到样式中来省略主题,但这没有用。因此,在这种情况下,它们似乎只是作为主题的样式,因为它们会影响工具栏中的继承子项,例如文本字段。