如何从不同 api 版本指定的样式继承
How to inherit from a style specified from a different api version
这是一个非常基本的问题 - 我支持 API 版本 11+,我想在具有更新的 API 版本的手机上使用功能。但是,如果我不必重新定义我的风格就好了。因此,例如,如果在 values/styles.xml 中,我有:
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.MyApp.Input.Text">
<item name="android:layout_width">match_parent<item>
<item name="android:layout_height>wrap_content</item>
</style>
</resources>
然后在 values-v14/styles.xml 我有:
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.MyApp.Input.Text">
<item name="android:textAllCaps">true</item>
</style>
</resources>
然后,在 API 14+ 的设备上,我将获得两种样式的结合。
这个问题很老,但有可能:
以下片段来自 values/styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/dark</item>
<item name="colorAccent">@color/green</item>
<item name="checkboxStyle">@style/AppTheme.CheckBox</item>
</style>
如果你想继承(例如)相同的风格并专注于 API >=23 你必须定义一个 values/style-23.xml 如下:
<style name="AppTheme.AppTheme23" >
<item name="android:windowLightStatusBar">true</item>
</style>
显然在AndroidManifest.xml中指定的主题是:
android:theme="@style/AppTheme"
这就是所有的人!
这是一个非常基本的问题 - 我支持 API 版本 11+,我想在具有更新的 API 版本的手机上使用功能。但是,如果我不必重新定义我的风格就好了。因此,例如,如果在 values/styles.xml 中,我有:
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.MyApp.Input.Text">
<item name="android:layout_width">match_parent<item>
<item name="android:layout_height>wrap_content</item>
</style>
</resources>
然后在 values-v14/styles.xml 我有:
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.MyApp.Input.Text">
<item name="android:textAllCaps">true</item>
</style>
</resources>
然后,在 API 14+ 的设备上,我将获得两种样式的结合。
这个问题很老,但有可能: 以下片段来自 values/styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/dark</item>
<item name="colorAccent">@color/green</item>
<item name="checkboxStyle">@style/AppTheme.CheckBox</item>
</style>
如果你想继承(例如)相同的风格并专注于 API >=23 你必须定义一个 values/style-23.xml 如下:
<style name="AppTheme.AppTheme23" >
<item name="android:windowLightStatusBar">true</item>
</style>
显然在AndroidManifest.xml中指定的主题是:
android:theme="@style/AppTheme"
这就是所有的人!