[CAUSE]
在写一个自定义View时, 直接复制了Android-Source的XML布局文件, 默认开发SDK版本是4.2.2(Level-API-17), 后因其他原因将SDK版本改为4.1.2 (Level-API-16), 然后XML布局文件就报错了, ----这时才知道paddingStart & paddingEnd是4.2.2中才新加的.
P.S.可以对比如下两个Android-XML文件(特别注意paddingStart & paddingEnd):
- android-sdk\platforms\android-17\data\res\values\styles.xml
- android-sdk\platforms\android-16\data\res\values\styles.xml
[QuickStart]
- paddingStart & paddingEnd 是根据左右对齐方式来起作用的
- 左对齐时, paddingStart 对应 paddingLeft, paddingEnd 对应 paddingRight
- 右对齐时, 正好相反
[ANALYSIS]
- 打开文件android-sdk\sources\android-17\android\view\View.java
- 可以找到mUserPaddingStart (mUserPaddingEnd) 就是存储 paddingStart (paddingEnd) 属性的变量
- 又可以找到其被赋值给mUserPaddingLeft / mUserPaddingRight, 可在resolvePadding() & resetPaddingToInitialValues() 找到
- 接下来, 可以看到这两个函数都会调用到 getLayoutDirection() , 来检查是LAYOUT_DIRECTION_RTL 还是 LAYOUT_DIRECTION_LTR 的对齐方式