Java 如何在android中创建主题实例

Java 如何在android中创建主题实例,java,android,kotlin,resources,themes,Java,Android,Kotlin,Resources,Themes,android中有一些方法,例如资源类的getColor,它们要求一个主题参数。我没有找到创建主题实例的方法,因此不知道将什么作为主题发送到getColor方法。我知道null是一个选项,但我更愿意理解如何使用参数(getColor方法中主题参数的含义)如果您只是从资源xml中引用固定颜色,您不会注意到差异 但是,您也可以使用getColor引用颜色选择器,例如: color/singlecolor.xml <?xml version="1.0" encoding=&q

android中有一些方法,例如资源类的getColor,它们要求一个主题参数。我没有找到创建主题实例的方法,因此不知道将什么作为主题发送到getColor方法。我知道null是一个选项,但我更愿意理解如何使用参数(getColor方法中主题参数的含义)

如果您只是从资源xml中引用固定颜色,您不会注意到差异

但是,您也可以使用
getColor
引用颜色选择器,例如:

color/singlecolor.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="?attr/colorPrimary" />
</selector>

在本例中,引用了主题样式属性
colorPrimary

  • 如果您将
    null
    作为主题传递,您将从应用程序主主题接收值
  • 如果您传递
    context.getTheme
    ,您将从活动的主题中获得价值

当然,您的活动需要有一个自定义主题,该主题与应用程序主题本身具有不同的
colorPrimary
,以注意差异。

在大多数情况下,您将希望从当前上下文传递主题对象:。您也可以自己使用而不是访问资源对象。@Pawel,但是如果我正在编写以下代码行:context.getResource().getColor(R.color.myRedColor,context.getTheme),是否有可能在xml颜色中找不到*myRedColor,而在主题下找到它?我会很高兴得到一个小的(甚至愚蠢的)例子,谢谢你!!!!你是说如果我在写getColor(R.color.myFixedColor),那么第二个参数就无关紧要了?