我正在尝试在运行时检索 Android 样式值,因此我可以在自定义组件中应用它们。(将样式 ID 作为第三个参数传递给嵌入式视图的构造函数似乎不起作用。)我找到了Context. obtainStyledAttributes(int, int[])
,但这似乎神秘地无法检索我知道在样式中设置的特定属性。(也就是说,当 的int[]
值android.R.attr.*
包含样式中指定的属性和样式中未指定的属性的混合时,将为某些但不是全部指定的属性TypedArray
具有值(ie TypedArray. hasValue(int)
)在风格上。)
我还发现Resources. obtainTypedArray(int)
,它似乎总是具有样式中的所有值 - 但它似乎很难使用。问题是这些值似乎没有指定它们用于哪个属性 - 它们只是按照属性在<style>
资源中出现的顺序出现。
即使在我知道我正在检查哪种风格的特殊情况下,我也无法对属性的顺序做出假设:有人可能会出现并按字母顺序、功能或随机排序。
在更一般的情况下,我需要处理用户可能指定的任何样式资源,我需要按
android.R.attr.*
值进行探测。
所以,我的问题是:有什么方法可以找到样式包含的属性、顺序吗?
我可以打电话Resources. getIntArray( styleId )
,但这并没有给我一个int[]
价值android.R.attr.*
!