【问题标题】:Alternative Layouts替代布局
【发布时间】:2014-11-04 17:22:49
【问题描述】:
我正在开发一个 Android 应用程序,我希望为运行 5.0+ 的设备和 4.1 到 4.4 的设备支持 Material Design。
我正在使用appcompat 库来获得对旧版本的一些支持。
现在我面临着仅存在于 v21 中的属性,例如 elevation。
我可以创建一个layout-v21 文件夹并在那里添加我的活动布局,这会导致相当多的重复。
你有其他方法吗?
有没有办法为此使用样式?如何将样式从values 子类化为values-v21
【问题讨论】:
标签:
android
android-layout
android-5.0-lollipop
code-duplication
【解决方案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>
覆盖 v21 的 AppTheme,但保留 v21 之前的 AppTheme.Base 的所有属性。