当使用纯代码写控件时需要使用代码的方式生成id
private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
/**
* 当API最小版本小于17时使用当前方法生成ID
* 当API版本大于17时使用 View.generateViewId()方法生成ID
* @return
*/
public static int generateViewId() {
for (;;) {
final int result = sNextGeneratedId.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result + 1;
if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
if (sNextGeneratedId.compareAndSet(result, newValue)) {
return result;
}
}
}