在运行时读取Android样式信息

在运行时读取Android样式信息,android,Android,我试图在运行时检索Android样式的值,以便在自定义组件中应用它们。我找到了上下文。获取StyledAttributes(int,int[]),但这似乎神秘地无法检索我知道在样式中设置的特定属性。(也就是说,当android.R.attr.值的int[]包含在样式中指定的属性和在样式中未指定的属性的组合时,TypedArray将有一个值(即TypedArray.hasValue(int))用于在样式中指定的部分(但不是全部)属性。) 我还找到了资源。obtainTypedArray(int),

我试图在运行时检索Android样式的值,以便在自定义组件中应用它们。我找到了
上下文。获取StyledAttributes(int,int[])
,但这似乎神秘地无法检索我知道在样式中设置的特定属性。(也就是说,当
android.R.attr.
值的
int[]
包含在样式中指定的属性和在样式中未指定的属性的组合时,
TypedArray
将有一个值(即
TypedArray.hasValue(int)
)用于在样式中指定的部分(但不是全部)属性。)

我还找到了
资源。obtainTypedArray(int)
,它似乎总是包含样式中的所有值,但似乎很难使用。问题在于,这些值似乎没有指定它们用于哪个属性——它们只是按照属性在
资源中出现的顺序出现

  • 即使在我知道我正在检查哪种风格的特殊情况下,我也会 无法对属性的顺序进行假设:可能有人会 来按字母顺序或功能顺序对它们进行排序,或 随机的

  • 在更一般的情况下,我需要处理 用户可能指定的样式资源,我需要通过
    android.R.attr.*
    value

那么,我的问题是:有没有办法找到一个样式包含哪些属性,以何种顺序?


我可以调用
资源。getIntArray(styleId)
,但这并没有给我一个
int[]
android.R.attr.*

我找到了为什么
上下文。获取StyleDatAttributes(int,int[])
,保持“神秘地失败”