Jak*_*son 41 android android-theme
我有一个应用程序,我想为Android 2.1,2.2,2.3.3,3.0/3.1和4.0.x开发.在这些API级别之间,有大约3种不同类型的主题.最新的4.0.x主题是Holo.
无论如何,我希望我的应用程序使用默认的Android主题,无论它在哪个设备上.如果它在4.0.x设备上,我希望它使用Holo.如果它在2.3.3上,我希望它使用该版本Android的主题.等等...
有一个简单的方法来解决这个问题吗?我注意到,在4.0中,他们添加了一个Theme.DeviceDefault可以使用的主题,但这对我的旧API级别没有帮助.对此最好的方法是什么?
zap*_*apl 69
Android设备目前最多有3个,有时4个主题(.Light不包括变体和类似主题)
Theme最早版本的Android的默认值高达2.3 Gingerbread(10),包括那些版本中的一些小的样式更改
Theme.Holo推出Android 3.0 Honeycomb(11)
Theme.MaterialAndroid 5.0 Lollipop中的新功能(21)
Theme.DeviceDefault(可能是任何东西)
推出4.0冰淇淋三明治(14),这个主题可以由设备制造商定制.它代表了设备的原生外观 - 即Nexus设备上的Holo或Material(以及Android Studio的设计编辑器中),可能是其他设备上的自定义内容.如果"自定义"不是一个选项,那些设备必须附带股票主题.想要股票主题的应用程序必须指定它.
对此最好的方法是什么?
最简单但不一定是最佳选择是根本不定义主题.Android将为您选择默认值.但Android不希望使用您不期望的主题来为您的应用程序带来惊喜,因此它会回归到您可能为您的应用程序设计的主题.它通过查看android:targetSdkVersion内部AndroidManifest.xml(现在可以通过gradle设置)来实现.
Theme(仅具有API级别3-10)将仅获得Theme.Theme.Holo.Theme.DeviceDefault.由于这只是为了向后兼容,因此您不会Theme.Material使用旧的Gingerbread手机.因此,没有主题+目标14+ =设备默认值.
Android的资源覆盖系统允许根据设备API级别指定样式.例如,res/values-v11和中的样式的不同版本res/values-v21.这也是通过Android Studio为您设置的任何新创建的应用程序.
例如,.Light主题应用程序的最基本设置如下所示:
/res/values/styles.xml 适用于每个设备并作为基础
<resources>
<style name="AppTheme" parent="android:Theme.Light"/>
</resources>
Run Code Online (Sandbox Code Playgroud)
/res/values-v11/styles.xml已加载到API等级11及以上(包括21及以上版本)的所有设备上.但实际上只使用了最新版本的"AppTheme".
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light"/>
</resources>
Run Code Online (Sandbox Code Playgroud)
/res/values-v21/styles.xml
<resources>
<style name="AppTheme" parent="android:Theme.Material.Light"/>
</resources>
Run Code Online (Sandbox Code Playgroud)
注意:或者指定Theme.DeviceDefaultin /res/values-v14/styles.xml应该足以具有默认外观但不允许微调设计.添加v14覆盖没有伤害.毕竟,DeviceDefault和Holo可能会有所不同.
AndroidManifest.xml是自定义主题使用的地方.例如,作为应用程序范围默
...
<application
android:theme="@style/AppTheme"
...
Run Code Online (Sandbox Code Playgroud)
根据平台版本选择主题 - 通过资源配置定义不同样式的官方文档
Holo Everywhere - 解释默认机制和DeviceDefault/Holo主题的博客文章
使用材料主题 - 材料文档
| 归档时间: |
|
| 查看次数: |
43767 次 |
| 最近记录: |