Android:如何在drawable xml中使用当前主题的颜色?

use*_*180 11 xml android runtime android-theme xml-drawable

我已经定义了两个具有不同主要,主要暗,主要光和强调颜色的主题.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

<style name="AppTheme2" parent="AppTheme">
    <item name="colorPrimary">@color/primary_2</item>
    <item name="colorPrimaryDark">@color/primary_dark_2</item>
    <item name="colorAccent">@color/accent_2</item>
</style>
Run Code Online (Sandbox Code Playgroud)

AppTheme默认为<application/> Then然后我在特定活动中设置AppTheme2.

在一个可绘制的文件xml中,我使用了colors.xml中定义的相同的AppTheme原色

drawable用于两个主题的许多活动,所以当有AppTheme2我看到不同的颜色.有没有办法让drawable使用当前主题的颜色为当前活动?

e-s*_*yut 28

您可以使用此属性从当前使用的主题中获取颜色:

android:color="?colorPrimary"
Run Code Online (Sandbox Code Playgroud)

这仅适用于Android 5.0或更高版本.

  • 如何以编程方式执行此操作? (3认同)
  • 无论如何要在Android 4中执行此操作?或者我必须按顺序进行此操作吗? (2认同)