GPa*_*ack 9 android android-custom-view typedarray android-resources android-custom-attributes
我正在阅读有关getResourceId()方法的文档.它说:
检索索引处属性的资源标识符.请注意,在检索整个TypedArray对象时,属性资源已解析.因此,此函数将返回找到的最终资源值的资源标识符,而不一定是该属性指定的原始资源.
所以
检索索引处属性的资源标识符.
请注意,在检索整个TypedArray对象时,属性资源已解析.
因此,此函数将返回找到的最终资源值的资源标识符,而不一定是该属性指定的原始资源.
从 文档中:
TypedArray obtainStyledAttributes (AttributeSet set,
int[] attrs,
int defStyleAttr,
int defStyleRes)
Run Code Online (Sandbox Code Playgroud)
....
在确定特定属性的最终值时,有四个输入起作用:
- 给定AttributeSet中的任何属性值。
- 在AttributeSet中指定的样式资源(名为“样式”)。
- defStyleAttr和defStyleRes指定的默认样式
- 此主题的基本值。
这是因为资源合并TypedArray需要在检索之前进行。
基于 Gradle 的构建系统使用新的资源合并机制。在以前的构建系统中,合并是通过将资源文件夹列表传递给充当覆盖层的 aapt 来完成的,与 --auto-add-overlay 一起确保覆盖层中的新资源将自动添加(覆盖层的默认行为是仅覆盖现有资源,而不创建新资源)。
基于 Gradle 的构建系统的目标之一是提供更大的灵活性,一项常见的功能请求是能够拥有多个资源文件夹。aapt 无法处理此问题,因此新的构建系统引入了一种新的合并机制,该机制在 aapt 之前运行并生成一个单独的合并资源文件夹,并将其提供给 aapt。这种合并的优点是增量式的,既通过 Gradle 的输入/输出更改检测,又通过它的实现方式(即它可以通过仅在单个文件中应用更改来重新运行合并)。
合并的资源来自 3 种类型的来源:
- 主要资源,与主sourceSet相关,一般位于src/main/res
- 来自构建类型和风味的变体覆盖。
- 图书馆项目依赖项,通过其 aar 包中的 res 条目提供资源。
例如,如果您使用不同的资源productFlavors,或者buildTypes每种口味可能有不同的资源。所以开发时最初设定的可能和改变口味后实际呈现的不一样。
| 归档时间: |
|
| 查看次数: |
1745 次 |
| 最近记录: |