从主题中检索时颜色重音错误
Wrong colorAccent when retrieving from theme
我想使用应用程序主题中的 colorAccent。有两个具有不同强调色的主题。我用这段代码实现它:
样式:
<style name="BaseAppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
<style name="AppGreenTheme" parent="BaseAppTheme">
<item name="colorAccent">@color/green</item>
</style>
<style name="AppRedTheme" parent="BaseAppTheme">
<item name="colorAccent">@color/red</item>
</style>
布局:
<FrameLayout
android:id="@+id/receives_funds_share"
android:background="?colorAccent"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
但它显示错误的颜色 (#04dac6)。当正确的颜色较深时 (#05c0a5)。
当我将它从 android:background="?colorAccent"
更改为 android:background="@color/green" 时,效果很好。有什么区别?如何从样式中正确获取 accentColor?
测试于 Android 11.
您应该将主题设置为 mainfest.xml
中的 activity:
<activity
android:name=".activities.MainActivity"
android:theme="@style/AppGreenTheme">
</activity>
事实是,由于您将 Theme.MaterialComponents.Light.DarkActionBar
用作 parent,因此 colorAccent
不适用。而是尝试将其替换为 colorSecondary
,如下所示。
Theme.MaterialComponents
使用 colorSecondary
并在他们的文档中进行了描述。库中定义的所有组件都使用此属性。
<style name="BaseAppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
<style name="AppGreenTheme" parent="BaseAppTheme">
<item name="colorSecondary">@color/green</item>
</style>
<style name="AppRedTheme" parent="BaseAppTheme">
<item name="colorSecondary">@color/red</item>
</style>
我想使用应用程序主题中的 colorAccent。有两个具有不同强调色的主题。我用这段代码实现它:
样式:
<style name="BaseAppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
<style name="AppGreenTheme" parent="BaseAppTheme">
<item name="colorAccent">@color/green</item>
</style>
<style name="AppRedTheme" parent="BaseAppTheme">
<item name="colorAccent">@color/red</item>
</style>
布局:
<FrameLayout
android:id="@+id/receives_funds_share"
android:background="?colorAccent"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
但它显示错误的颜色 (#04dac6)。当正确的颜色较深时 (#05c0a5)。
当我将它从 android:background="?colorAccent"
更改为 android:background="@color/green" 时,效果很好。有什么区别?如何从样式中正确获取 accentColor?
测试于 Android 11.
您应该将主题设置为 mainfest.xml
中的 activity:
<activity
android:name=".activities.MainActivity"
android:theme="@style/AppGreenTheme">
</activity>
事实是,由于您将 Theme.MaterialComponents.Light.DarkActionBar
用作 parent,因此 colorAccent
不适用。而是尝试将其替换为 colorSecondary
,如下所示。
Theme.MaterialComponents
使用 colorSecondary
并在他们的文档中进行了描述。库中定义的所有组件都使用此属性。
<style name="BaseAppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
<style name="AppGreenTheme" parent="BaseAppTheme">
<item name="colorSecondary">@color/green</item>
</style>
<style name="AppRedTheme" parent="BaseAppTheme">
<item name="colorSecondary">@color/red</item>
</style>