当我遇到这段文字时,我正在乱搞MeasureSpec:
注意:在API级别17和更低级别,makeMeasureSpec的实现使得参数的顺序无关紧要,并且任何一个值的溢出都可能影响生成的MeasureSpec.RelativeLayout受此错误的影响.针对API级别大于17的应用将获得固定的,更严格的行为.
所以这让我想知道:如果我为API 14构建一个应用程序,但是我在API 22设备上运行它会修复错误还是<API 17的错误仍然存在于22设备上?
makeMeasureSpec (API 17<) 方法的实现如下:
public static int makeMeasureSpec(int size, int mode) {
if (sUseBrokenMakeMeasureSpec) {
return size + mode;
} else {
return (size & ~MODE_MASK) | (mode & MODE_MASK);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它的返回值取决于在类的构造函数中sUseBrokenMakeMeasureSpec分配的值View:
sUseBrokenMakeMeasureSpec = targetSdkVersion <= JELLY_BEAN_MR1;
Run Code Online (Sandbox Code Playgroud)
因此,只有应用程序的目标才能决定行为。通过这种方式,新系统可以保持与旧应用程序的兼容性,从而实现旧行为。
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |