我正在开发一个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的所有属性。