Added in API level 1

Theme


class Theme
kotlin.Any
   ↳ android.content.res.Resources.Theme

This class holds the current attribute values for a particular theme. In other words, a Theme is a set of values for resource attributes; these are used in conjunction with TypedArray to resolve the final value for an attribute.

The Theme's attributes come into play in two ways: (1) a styled attribute can explicit reference a value in the theme through the "?themeAttribute" syntax; (2) if no value has been defined for a particular styled attribute, as a last resort we will try to find that attribute's value in the Theme.

You will normally use the #obtainStyledAttributes APIs to retrieve XML attributes with style and theme information applied.

Summary

Public methods
Unit
applyStyle(resId: Int, force: Boolean)

Place new attribute values into the theme.

Unit
dump(priority: Int, tag: String!, prefix: String!)

Print contents of this theme out to the log.

Boolean
equals(other: Any?)

Indicates whether some other object is "equal to" this one.

IntArray
getAttributeResolutionStack(defStyleAttr: Int, defStyleRes: Int, explicitStyleRes: Int)

Returns the ordered list of resource ID that are considered when resolving attribute values when making an equivalent call to obtainStyledAttributes(android.util.AttributeSet,int[],int,int) .

Int

Returns a bit mask of configuration changes that will impact this theme (and thus require completely reloading it).

Drawable!

Return a drawable object associated with a particular resource ID and styled for the Theme.

Int

Returns the resource ID for the style specified using style="..." in the AttributeSet's backing XML element or Resources#ID_NULL otherwise if not specified or otherwise not applicable.

Resources!

Returns the resources to which this theme belongs.

Int

TypedArray

Return a TypedArray holding the values defined by Theme which are listed in attrs.

TypedArray

Return a TypedArray holding the values defined by the style resource resid which are listed in attrs.

TypedArray
obtainStyledAttributes(set: AttributeSet?, attrs: IntArray, defStyleAttr: Int, defStyleRes: Int)

Return a TypedArray holding the attribute values in set that are listed in attrs.

Unit

Rebases the theme against the parent Resource object's current configuration by re-applying the styles passed to applyStyle(int,boolean).

Boolean
resolveAttribute(resid: Int, outValue: TypedValue!, resolveRefs: Boolean)

Retrieve the value of an attribute in the Theme.

Unit

Set this theme to hold the same contents as the theme other.

String

Public methods

applyStyle

Added in API level 1
fun applyStyle(
    resId: Int,
    force: Boolean
): Unit

Place new attribute values into the theme. The style resource specified by resid will be retrieved from this Theme's resources, its values placed into the Theme object.

The semantics of this function depends on the force argument: If false, only values that are not already defined in the theme will be copied from the system resource; otherwise, if any of the style's attributes are already defined in the theme, the current values in the theme will be overwritten.

Parameters
resId Int: The resource ID of a style resource from which to obtain attribute values.
force Boolean: If true, values in the style resource will always be used in the theme; otherwise, they will only be used if not already defined in the theme.

dump

Added in API level 1
fun dump(
    priority: Int,
    tag: String!,
    prefix: String!
): Unit

Print contents of this theme out to the log. For debugging only.

Parameters
priority Int: The log priority to use.
tag String!: The log tag to use.
prefix String!: Text to prefix each line printed.

equals

Added in API level 1
fun equals(other: Any?): Boolean

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj the reference object with which to compare.
o This value may be null.
Return
Boolean true if this object is the same as the obj argument; false otherwise.

getAttributeResolutionStack

Added in API level 29
fun getAttributeResolutionStack(
    defStyleAttr: Int,
    defStyleRes: Int,
    explicitStyleRes: Int
): IntArray

Returns the ordered list of resource ID that are considered when resolving attribute values when making an equivalent call to obtainStyledAttributes(android.util.AttributeSet,int[],int,int) . The list will include a set of explicit styles (explicitStyleRes and it will include the default styles (defStyleAttr and defStyleRes).

Parameters
defStyleAttr Int: An attribute in the current theme that contains a reference to a style resource that supplies defaults values for the TypedArray. Can be 0 to not look for defaults.
defStyleRes Int: A resource identifier of a style resource that supplies default values for the TypedArray, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.
explicitStyleRes Int: A resource identifier of an explicit style resource.
Return
IntArray ordered list of resource ID that are considered when resolving attribute values. This value cannot be null.

getDrawable

Added in API level 21
fun getDrawable(id: Int): Drawable!

Return a drawable object associated with a particular resource ID and styled for the Theme.

Parameters
id Int: The desired resource identifier, as generated by the aapt tool. This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier.
Return
Drawable! Drawable An object that can be used to draw this resource.
Exceptions
android.content.res.Resources.NotFoundException Throws NotFoundException if the given ID does not exist.

getExplicitStyle

Added in API level 29
fun getExplicitStyle(set: AttributeSet?): Int

Returns the resource ID for the style specified using style="..." in the AttributeSet's backing XML element or Resources#ID_NULL otherwise if not specified or otherwise not applicable.

Each android.view.View can have an explicit style specified in the layout file. This style is used first during the android.view.View attribute resolution, then if an attribute is not defined there the resource system looks at default style and theme as fallbacks.

Parameters
set AttributeSet?: The base set of attribute values. This value may be null.
Return
Int The resource ID for the style specified using style="..." in the AttributeSet's backing XML element or Resources#ID_NULL otherwise if not specified or otherwise not applicable.

getResources

Added in API level 21
fun getResources(): Resources!

Returns the resources to which this theme belongs.

Return
Resources! Resources to which this theme belongs.

hashCode

Added in API level 1
fun hashCode(): Int
Return
Int a hash code value for this object.

obtainStyledAttributes

Added in API level 1
fun obtainStyledAttributes(attrs: IntArray): TypedArray

Return a TypedArray holding the values defined by Theme which are listed in attrs.

Be sure to call TypedArray.recycle() when you are done with the array.

Parameters
attrs IntArray: The desired attributes. These attribute IDs must be sorted in ascending order. This value cannot be null.
Return
TypedArray Returns a TypedArray holding an array of the attribute values. Be sure to call TypedArray.recycle() when done with it. This value cannot be null.
Exceptions
android.content.res.Resources.NotFoundException Throws NotFoundException if the given ID does not exist.

obtainStyledAttributes

Added in API level 1
fun obtainStyledAttributes(
    resId: Int,
    attrs: IntArray
): TypedArray

Return a TypedArray holding the values defined by the style resource resid which are listed in attrs.

Be sure to call TypedArray.recycle() when you are done with the array.

Parameters
resId Int: The desired style resource.
attrs IntArray: The desired attributes in the style. These attribute IDs must be sorted in ascending order. This value cannot be null.
Return
TypedArray Returns a TypedArray holding an array of the attribute values. Be sure to call TypedArray.recycle() when done with it. This value cannot be null.
Exceptions
android.content.res.Resources.NotFoundException Throws NotFoundException if the given ID does not exist.

obtainStyledAttributes

Added in API level 1
fun obtainStyledAttributes(
    set: AttributeSet?,
    attrs: IntArray,
    defStyleAttr: Int,
    defStyleRes: Int
): TypedArray

Return a TypedArray holding the attribute values in set that are listed in attrs. In addition, if the given AttributeSet specifies a style class (through the "style" attribute), that style will be applied on top of the base attributes it defines.

Be sure to call TypedArray.recycle() when you are done with the array.

When determining the final value of a particular attribute, there are four inputs that come into play:

  1. Any attribute values in the given AttributeSet.
  2. The style resource specified in the AttributeSet (named "style").
  3. The default style specified by defStyleAttr and defStyleRes
  4. The base values in this theme.

Each of these inputs is considered in-order, with the first listed taking precedence over the following ones. In other words, if in the AttributeSet you have supplied <Button textColor="#ff000000">, then the button's text will always be black, regardless of what is specified in any of the styles.

Parameters
set AttributeSet?: The base set of attribute values. May be null.
attrs IntArray: The desired attributes to be retrieved. These attribute IDs must be sorted in ascending order. This value cannot be null.
defStyleAttr Int: An attribute in the current theme that contains a reference to a style resource that supplies defaults values for the TypedArray. Can be 0 to not look for defaults.
defStyleRes Int: A resource identifier of a style resource that supplies default values for the TypedArray, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.
Return
TypedArray Returns a TypedArray holding an array of the attribute values. Be sure to call TypedArray.recycle() when done with it. This value cannot be null.

rebase

Added in API level 29
fun rebase(): Unit

Rebases the theme against the parent Resource object's current configuration by re-applying the styles passed to applyStyle(int,boolean).

resolveAttribute

Added in API level 1
fun resolveAttribute(
    resid: Int,
    outValue: TypedValue!,
    resolveRefs: Boolean
): Boolean

Retrieve the value of an attribute in the Theme. The contents of outValue are ultimately filled in by android.content.res.Resources#getValue.

Parameters
resid Int: The resource identifier of the desired theme attribute.
outValue TypedValue!: Filled in with the ultimate resource value supplied by the attribute.
resolveRefs Boolean: If true, resource references will be walked; if false, outValue may be a TYPE_REFERENCE. In either case, it will never be a TYPE_ATTRIBUTE.
Return
Boolean boolean Returns true if the attribute was found and outValue is valid, else false.

setTo

Added in API level 1
fun setTo(other: Resources.Theme!): Unit

Set this theme to hold the same contents as the theme other. If both of these themes are from the same Resources object, they will be identical after this function returns. If they are from different Resources, only the resources they have in common will be set in this theme.

Parameters
other Resources.Theme!: The existing Theme to copy from.

toString

Added in API level 1
fun toString(): String
Return
String a string representation of the object.