请问 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放在哪个文件中?
在整个页面的样式和主题中,您可能正在寻找这一行。
当您将样式应用于布局中的单个视图时,样式定义的属性仅应用于该视图。如果将样式应用于ViewGroup,则子View元素将不会继承样式属性,只有直接应用样式的元素将应用其属性。但是,您可以将样式应用为主题,以使其适用于所有View元素。
当您将其作为主题应用时,它会改变范围内的所有内容,具体取决于您是否将其应用于Activity或Application。样式更加“局部”。
引用自Android API指南:
要创建一组样式,请在项目的
res/values/
目录中保存一个XML文件。XML文件的名称是任意的,但必须使用.xml
扩展名并保存在res/values/
文件夹中。 XML文件的根节点必须是<resources>
。
因此,只要是位于res/values/
文件夹中的XML文件,将样式放在哪个文件都不重要。
许多答案都表明,styles.xml和themes.xml之间没有功能上的区别。
值得注意的是,谷歌的iosched2014应用只有一个styles.xml文件(没有themes.xml文件)。
摘自样式和主题文档,定义样式一节:
To create a set of styles, save an XML file in the res/values/ directory of your project. The name of the XML file is arbitrary, but it must use the .xml extension and be saved in the res/values/ folder.
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>