替代布局

时间:2014-11-04 17:22:49

标签: android android-layout android-5.0-lollipop code-duplication

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

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

现在我面临的是仅存在于v21中的属性,例如elevation

我可以创建一个layout-v21文件夹并在那里添加我的活动布局,这会导致相当多的重复。

你这样做了吗?

有没有办法为此使用样式?如何将样式从values子类化为values-v21

1 个答案:

答案 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的所有属性。