如何在现有主题中扩展 API 依赖主题条目?
How to extend API dependend theme entries in an existing theme?
在 Android 开发中,我可以提供 API depending resources. I've a custom theme which I would like to extend with two new entries for API 29 and higher as described here。
所以 file/folder 结构看起来像这样:
res
- values
- dark_theme.xml
- light_theme.xml
- values-v29
- dark_theme.xml
- light_theme.xml
我怎样才能在 values-v29\dark_theme.xml
和 values\light_theme.xml
中扩展(向现有主题添加项目)values\dark_theme.xml
和 values\light_theme.xml
中定义的主题?
假设我想使用 "edge-to-edge" feature 的新选项扩展浅色主题。我需要如何设置主题,这样我就不需要将所有值从原始主题复制到 -v29
文件夹中的主题?
values\light_theme.xml
的内容:
<resources>
<style name="AppTheme_Light" parent="BaseAppTheme">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_light</item>
...
</style>
</resources>
文件需要如何使用 values
文件夹中主题中已定义的项目而不处理整个主题?
values-29\light_theme.xml
的内容:
<style name="AppTheme_Light" parent="BaseAppTheme">
...How to ensure all the previous items defined in values\light_theme.xml are used here?
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
Apparently 看来要走的路是使用 XML 属性
tools:ignore="NewApi"
来自 tools namespace.
所以我在我的案例中使用了这些行,而不是复制我的样式文件:
<style name="AppTheme_Light" parent="BaseAppTheme">
...
<item name="android:navigationBarColor" tools:ignore="NewApi">@android:color/transparent</item>
<item name="android:statusBarColor" tools:ignore="NewApi">@android:color/transparent</item>
</style>
如果这是好的做法,似乎是“to depend”,因为我隐藏了可能不兼容的小部件属性。
在 Android 开发中,我可以提供 API depending resources. I've a custom theme which I would like to extend with two new entries for API 29 and higher as described here。
所以 file/folder 结构看起来像这样:
res
- values
- dark_theme.xml
- light_theme.xml
- values-v29
- dark_theme.xml
- light_theme.xml
我怎样才能在 values-v29\dark_theme.xml
和 values\light_theme.xml
中扩展(向现有主题添加项目)values\dark_theme.xml
和 values\light_theme.xml
中定义的主题?
假设我想使用 "edge-to-edge" feature 的新选项扩展浅色主题。我需要如何设置主题,这样我就不需要将所有值从原始主题复制到 -v29
文件夹中的主题?
values\light_theme.xml
的内容:
<resources>
<style name="AppTheme_Light" parent="BaseAppTheme">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_light</item>
...
</style>
</resources>
文件需要如何使用 values
文件夹中主题中已定义的项目而不处理整个主题?
values-29\light_theme.xml
的内容:
<style name="AppTheme_Light" parent="BaseAppTheme">
...How to ensure all the previous items defined in values\light_theme.xml are used here?
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
Apparently 看来要走的路是使用 XML 属性
tools:ignore="NewApi"
来自 tools namespace.
所以我在我的案例中使用了这些行,而不是复制我的样式文件:
<style name="AppTheme_Light" parent="BaseAppTheme">
...
<item name="android:navigationBarColor" tools:ignore="NewApi">@android:color/transparent</item>
<item name="android:statusBarColor" tools:ignore="NewApi">@android:color/transparent</item>
</style>
如果这是好的做法,似乎是“to depend”,因为我隐藏了可能不兼容的小部件属性。