我正在开发一个Android应用程序,我想支持运行5.0+的设备和4.1到4.4的设备的Material Design。
我正在使用appcompat
库来获得旧版本的支持。
现在我面临的是仅存在于v21中的属性,例如elevation
。
我可以创建一个layout-v21
文件夹并在那里添加我的活动布局,这会导致相当多的重复。
你这样做了吗?
有没有办法为此使用样式?如何将样式从values
子类化为values-v21
答案 0 :(得分:1)
这是我用过的链接,提供了有关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>
要覆盖AppTheme for v21,但要保留v21之前AppTheme.Base的所有属性。