自定义View时,使用id值的正确姿势
2019-03-08 本文已影响0人
已迁至知乎_此不再维护
正确姿势.jpg
假设:
- 存在继承自View的自定义控件CView;
- 存在继承自ViewGroup的自定义控件CViewGroup;
- CViewGroup的layout文件里包含了控件CView——即CView[of CViewGroup]
- 页面P的layout文件中同时使用了CViewGroup和CView——即CView[of P];
那么:
- CView[of CViewGroup]和CView[of P]的id不能相同;
- 在页面P中,若id相同,且CViewGroup先于CView布局,且对CView注册监听;
- 则点击CView[of P]的时候不会触发监听,而点击CView[of CViewGroup]的时候会触发监听。
因此:
- 为了避免上述问题,自定义View的时候:内部控件的id应以宿主类名开头!