如何在现有主题中扩展 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.xmlvalues\light_theme.xml 中扩展(向现有主题添加项目)values\dark_theme.xmlvalues\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”,因为我隐藏了可能不兼容的小部件属性。