我正在尝试学习如何使用styles.xml文件设置我的应用程序样式,我需要澄清一些事情来理解它。
在项目中,设置android:actionbarstyle
和actionbarstyle
之间的区别是什么?我知道在这种特殊情况下,我必须定义两者,但为什么呢?那么所有其他情况呢,例如android:colorPrimary
和colorPrimary
?在这种情况下,我收到一条错误消息,指出android:colorPrimary
只能与最低API级别21一起使用。那么有人对android:
前缀的作用以及它对我的应用程序的影响有一个很好的解释吗?
是否有对不同父样式的引用,例如parent="@style/Widget.AppCompat.Light.ActionBar
及其含义?如何查找特定项目可用的不同父样式列表以及我可以覆盖的内容#34;在他们中?现在,它主要是猜测我......
作为参考,我发布了我当前的styles.xml文件。
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="MyTheme"/>
<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="actionBarTheme">@style/MyTheme.ActionBarTheme</item>
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
<item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item>
<item name="colorPrimary">@color/my_green</item>
<item name="colorPrimaryDark">@color/my_forest</item>
<item name="colorAccent">@color/my_soil</item>
<item name="drawerArrowStyle">@style/MyTheme.DrawerArrowStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyTheme.OverFlow</item>
<item name="android:actionMenuTextColor">@color/white</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="colorControlNormal">@color/my_green</item>
<item name="colorControlActivated">@color/my_forest</item>
<item name="colorControlHighlight">@color/my_deep_green</item>
</style>
<style name="MyTheme.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- This sets the BACK arrow to white. Otherwise it's black. Must be placed in the theme-->
<item name="colorControlNormal">@color/white</item>
</style>
<style name="MyTheme.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:background">@color/my_green</item>
<item name="background">@color/my_green</item>
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="colorControlNormal">@color/white</item>
</style>
<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
<style name="MyTheme.DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/white</item>
</style>
<style name="MyTheme.OverFlow" parent="Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">@color/white</item>
</style>
</resources>
答案 0 :(得分:2)
我会尽力解释并专注于:
<item name="colorPrimary">@color/my_green</item>
<item name="colorPrimaryDark">@color/my_forest</item>
<item name="colorAccent">@color/my_soil</item>
这些属性通常在API级别21中可用。通常,您使用带有“android”前缀的属性。
如果您在values文件夹的styles.xml中定义所有样式,并且如果您使用的是app compat,那么您需要两者。
没有前缀,属性适用于pre L设备。即App Compat。要使它适用于L设备和更高版本,您需要使用“android”前缀再次指定属性。
要获得其他Android样式,您可以进入它们,就像您进入类和实现一样。对于Mac,我按下命令按钮,然后用鼠标单击特定样式。