我正在开发一个Android应用程序,该应用程序要为运行5.0+和4.1至4.4的设备支持Material Design。

我正在使用appcompat库来获得对较早版本的支持。

现在,我遇到的是仅在v21中存在的属性,例如elevation

我可以创建一个layout-v21文件夹,然后再次在其中添加我的活动的布局,这会导致很多重复。

您是否以其他方式这样做?

有没有办法使用样式呢?如何将样式从values细分为values-v21

最佳答案

这是我使用的链接,该链接提供了有关v21 Lollipop的替代样式/主题的一些信息:http://antonioleiva.com/material-design-everywhere/

本质上,您可以在values / themes.xml中执行

<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>


然后在values-v21 / themes.xml中

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>


覆盖v21的AppTheme,但保留v21之前的AppTheme.Base的所有属性。

09-07 22:16