gpt4 book ai didi

Android 样式,api 级别之间的差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:24 24 4
gpt4 key购买 nike

我正在尝试学习如何使用 styles.xml 文件设置我的应用程序的样式,我需要澄清一些事情才能理解它。

  1. 在 Item 中,设置 android:actionbarstyle 和只设置 actionbarstyle 有什么区别?我知道在这种特殊情况下,我必须同时定义两者,但为什么呢?那么所有其他情况呢,例如 android:colorPrimarycolorPrimary?在那种情况下,我收到一条错误消息,指出 android:colorPrimary 只能与最低 API 级别 21 一起使用。那么有人对 android: 前缀的作用有很好的解释吗以及它如何影响我的应用?

  2. 是否有对不同父样式的引用,例如 parent="@style/Widget.AppCompat.Light.ActionBar 以及它们的含义?如何找到列表特定项目可用的不同父样式以及我可以在其中“覆盖”什么?现在,我主要是在猜测....

作为引用,我发布了我当前的 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>

最佳答案

我会尽力解释并专注于:

<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 中定义了所有样式,并且您正在使用应用程序兼容性,那么您需要两者。

没有前缀,属性适用于 L 之前的设备。即应用程序兼容性。要使其适用于 L 及更高版本的设备,您需要使用“android”前缀再次指定该属性。

要获得其他 Android 样式,您可以进入它们,就像您进入类和实现一样。对于 Mac,我按下命令按钮,然后用鼠标单击特定样式。

关于Android 样式,api 级别之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32649464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com