在运行时读取Android样式信息
我试图在运行时检索Android样式的值,以便在自定义组件中应用它们。我找到了在运行时读取Android样式信息,android,Android,我试图在运行时检索Android样式的值,以便在自定义组件中应用它们。我找到了上下文。获取StyledAttributes(int,int[]),但这似乎神秘地无法检索我知道在样式中设置的特定属性。(也就是说,当android.R.attr.值的int[]包含在样式中指定的属性和在样式中未指定的属性的组合时,TypedArray将有一个值(即TypedArray.hasValue(int))用于在样式中指定的部分(但不是全部)属性。) 我还找到了资源。obtainTypedArray(int),
上下文。获取StyledAttributes(int,int[])
,但这似乎神秘地无法检索我知道在样式中设置的特定属性。(也就是说,当android.R.attr.
值的int[]
包含在样式中指定的属性和在样式中未指定的属性的组合时,TypedArray
将有一个值(即TypedArray.hasValue(int)
)用于在样式中指定的部分(但不是全部)属性。)
我还找到了资源。obtainTypedArray(int)
,它似乎总是包含样式中的所有值,但似乎很难使用。问题在于,这些值似乎没有指定它们用于哪个属性——它们只是按照属性在
资源中出现的顺序出现
- 即使在我知道我正在检查哪种风格的特殊情况下,我也会 无法对属性的顺序进行假设:可能有人会 来按字母顺序或功能顺序对它们进行排序,或 随机的
- 在更一般的情况下,我需要处理
用户可能指定的样式资源,我需要通过
valueandroid.R.attr.*
我可以调用
资源。getIntArray(styleId)
,但这并没有给我一个int[]
的android.R.attr.*
值 我找到了为什么上下文。获取StyleDatAttributes(int,int[])
,保持“神秘地失败”