【问题标题】:Material theme not applied correctly on pre-21 devicesMaterial 主题未在 21 之前的设备上正确应用
【发布时间】:2015-03-13 14:07:27
【问题描述】:

我知道,要正确使用 API-21 之前的设备的一些 Material 主题设计模式,我必须包含两个样式文件夹。

主题已在我的 Nexus 5 (lolipop) 设备上正确应用,但是当我在 API-21 之前的设备(我使用的是三星 Galaxy Note,API-16)上运行我的应用程序时,我得到了一个空白,黑屏。该应用程序工作正常,因为我可以与 Activity 进行交互(按下按钮、使用键盘等),但我什么也看不到。

这是我的 res/values-v21/themes.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="Theme.MyTheme" parent="AppTheme">

    <item name="colorPrimary">@color/green</item>
    <item name="colorPrimaryDark">@color/darkgreen</item>

</style>

</resources>

这是我的 res/values/themes.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">

</style>
</resources>

我已将此行包含在 &lt;application&gt; 下的清单文件中:

    android:theme="@style/Theme.MyTheme" 

我不应该为 pre-lolipop 设备使用 AppCompat 主题吗?我正在使用 v7 支持库。

感谢任何帮助。

【问题讨论】:

    标签: android themes material-design


    【解决方案1】:

    将您的res/values/themes.xml 更改为:

    <style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/green</item>
        <item name="colorPrimaryDark">@color/darkgreen</item>
    </style>
    

    然后从res/values-v21/themes.xml中删除相同的主题(name="Theme.MyTheme"

    【讨论】:

    • 这既搞砸了 v21 主题,也不会改变旧 API 的任何内容...
    • 您是在 values-v11 还是 v14 中覆盖此样式?
    • 我只有两个 values 文件夹:values 和 values-v21。我最小支持的sdk是15,目标sdk是21。
    • 原来我的代码中的其他东西导致了问题。否则,这是正确的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多