父级样式取决于构建变体
Parent style depending on build variant
我在 themes.xml
中定义了两个主题。
这两个主题通过 productFlavors 在清单中应用:
build.gradle
productFlavors {
flavor1 {
dimension "theme"
manifestPlaceholders = [
appTheme: "@style/Theme1"
]
}
flavor2 {
dimension "theme"
manifestPlaceholders = [
appTheme: "@style/Theme2"
]
}
}
manifest.xml
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"
android:theme="${appTheme}" >
这工作正常,根据所选的构建变体,应用不同的主题。
现在我要集成 Stripe SDK 声明一个名为 StripeDefaultTheme 的 Style。
在这种风格中,我想用我自己的主题的值覆盖 colorPrimary
和 colorAccent
。
是否可以为由 Build Variant 确定的样式声明父级?
Theme1 和 Theme2 可能有共同的 BaseTheme,您可以在 flavor res 目录 styles.xml 文件中覆盖它。
您可以只拥有一个根据不同风格而变化的主题,而不是制作两个单独的主题。为此,您只需覆盖相应风格的源集中的 styles.xml 文件。例如,
主源集中的AppTheme
应该只包含条纹相关的主题,
{app_module_dir}/src/main/res/values/styles.xml
<style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Stripe related values here. -->
</style>
将 Theme1 的内容复制到 flavor1 的源集中
{app_module_dir}/src/flavor1/res/values/styles.xml
<style name="AppTheme" parent="BaseAppTheme">
<!-- Theme1 contents here. -->
</style>
将 Theme2 的内容复制到 flavor2 的源集中
{app_module_dir}/src/flavor2/res/values/styles.xml
<style name="AppTheme" parent="BaseAppTheme">
<!-- Theme2 contents here. -->
</style>
万年节
<activity
...
android:theme="@style/AppTheme" >
build.gradle
productFlavors {
flavor1 {
dimension "theme"
}
flavor2 {
dimension "theme"
}
}
我在 themes.xml
中定义了两个主题。
这两个主题通过 productFlavors 在清单中应用:
build.gradle
productFlavors {
flavor1 {
dimension "theme"
manifestPlaceholders = [
appTheme: "@style/Theme1"
]
}
flavor2 {
dimension "theme"
manifestPlaceholders = [
appTheme: "@style/Theme2"
]
}
}
manifest.xml
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"
android:theme="${appTheme}" >
这工作正常,根据所选的构建变体,应用不同的主题。
现在我要集成 Stripe SDK 声明一个名为 StripeDefaultTheme 的 Style。
在这种风格中,我想用我自己的主题的值覆盖 colorPrimary
和 colorAccent
。
是否可以为由 Build Variant 确定的样式声明父级?
Theme1 和 Theme2 可能有共同的 BaseTheme,您可以在 flavor res 目录 styles.xml 文件中覆盖它。
您可以只拥有一个根据不同风格而变化的主题,而不是制作两个单独的主题。为此,您只需覆盖相应风格的源集中的 styles.xml 文件。例如,
主源集中的
AppTheme
应该只包含条纹相关的主题,{app_module_dir}/src/main/res/values/styles.xml
<style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Stripe related values here. --> </style>
将 Theme1 的内容复制到 flavor1 的源集中
{app_module_dir}/src/flavor1/res/values/styles.xml
<style name="AppTheme" parent="BaseAppTheme"> <!-- Theme1 contents here. --> </style>
将 Theme2 的内容复制到 flavor2 的源集中
{app_module_dir}/src/flavor2/res/values/styles.xml
<style name="AppTheme" parent="BaseAppTheme"> <!-- Theme2 contents here. --> </style>
万年节
<activity
...
android:theme="@style/AppTheme" >
build.gradle
productFlavors {
flavor1 {
dimension "theme"
}
flavor2 {
dimension "theme"
}
}