【问题标题】:Android device using a lower API target style than it should使用低于应有的 API 目标样式的 Android 设备
【发布时间】:2018-05-02 22:03:04
【问题描述】:

我的 Android 设备 Pixel XL 在 Android Debug Bridge 中用于调试目的时,似乎使用的是我的应用程序的 styles-v21 XML,而不是常规样式 XML。

我的设备上的 Android 版本是 8.1(API 级别 27),那么为什么它使用较低 API 级别的样式而不是其他样式?我是否误解了 21 及以下的设备应该使用 styles-v21 而其他一切都应该使用常规的 styles.xml?

我的项目的编译 SDK 版本和目标 SDK 版本是 27:Android 8.1 (Oreo)。最低 SDK 版本为 21。

【问题讨论】:

    标签: android adb android-styles backwards-compatibility


    【解决方案1】:

    我是否误解了 21 及以下的设备应该使用 styles-v21 而其他所有设备都应该使用常规的 styles.xml?

    是的。

    假设您的意思是您同时拥有values/styles.xmlvalues-v21/styles.xml,那么“v21”版本将用于任何 v21 或更新版本的设备,不是 v21 或更早版本。

    【讨论】:

    • 谢谢!所以如果是这样的话,我应该为低于我的目标版本的每个主要 API 级别制作 values/styles-v 吗?或者,如果我在 21 之后的 API 级别方面没有添加任何“新”内容,那么仅删除“styles.xml”并仅使用 styles-v21.xml 似乎是最好的情况?
    • @akinoreiki 如果不确切知道您要做什么,这种问题很难回答。通常,您希望将“基本”样式放入res/values/,然后将“新”样式(例如使用android:elevation)放入res/values-v21/。根据我自己的经验,我不会经常使用这些特殊样式。我所做的 95+% 都在 res/values/.
    • 我认为我的主题一直存在问题,因为我误解了 styles.xml 是针对以前的版本而 v21 是针对 21+ API 级别的。有了这个,我应该能够解决我的问题。使用 AppCompat 主题值作为我的“更高级别”API 主题,我认为这会造成混乱,因为我搞混了。不确定我的解释是否有意义,但无论哪种方式,您都帮助解决了我的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2017-05-03
    • 2018-03-11
    • 2013-03-24
    • 2016-12-22
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多