首页 > 代码库 > Android-Widget源码分析
Android-Widget源码分析
View以及所有控件是如何得知我们在布局设置的控件ID的.
【Attrs.xml文件】
# attrs.xml 文件. <declare-styleable name="View"> <!-- reference 代表某一个资源文件!! --> <attr name="id" format="reference" /> ... ...(N多信息哈,自己看代码) </declare-styleable>
【View的初始化】
public static final int NO_ID = -1; ... ... @ViewDebug.ExportedProperty(resolveId = true) // (注解) android-19/android/View/ViewDebug.java int mID = NO_ID; // 保存控件ID,默认值-1. ... ... public View(Context context, AttributeSet attrs, int defStyleAttr) { this(context); // 获取attrs.xml属性文件中的View. TypedArray a = context.obtainStyledAttributes( attrs, com.android.internal.R.styleable.View, defStyleAttr, 0); ... ... ... ...(N多代码,省略!!) for (int i = 0; i < N; i++) { int attr = a.getIndex(i); switch (attr) { ... ...(N多代码,省略!!) case com.android.internal.R.styleable.View_id: // 控件ID,获取View中的字段id. mID = a.getResourceId(attr, NO_ID); break;
【设置控件ID】
// 设置控件ID. public void setId(int id) { mID = id; if (mID == View.NO_ID && mLabelForId != View.NO_ID) { mID = generateViewId(); } }
【获取控件ID】
// 获取控件ID. @ViewDebug.CapturedViewProperty public int getId() { return mID; }
fff
fff
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。