【发布时间】:2011-07-26 14:20:58
【问题描述】:
是否可以通过名称而不是 id 来查找视图。
findViewById(R.id.someView);
但我想做这样的事情:
findViewByName("someView");
【问题讨论】:
是否可以通过名称而不是 id 来查找视图。
findViewById(R.id.someView);
但我想做这样的事情:
findViewByName("someView");
【问题讨论】:
在处理 xml 时,您必须按标识符查找视图,但您可以使用 getIdentifier(String name, ...) 查找标识符,例如,如果您对布局进行编号,这很有用。请注意,这样的查找相对昂贵。
完成答案
int id = getResources().getIdentifier(name, "id", context.getPackageName());
View view = findViewById(id);
【讨论】:
是的,我们也可以通过名称找到任何静态资源。
int id = getResources().getIdentifier(name, "id", context.getPackageName());
View view;
if(id != 0) {
view = findViewById(id);
}
getResources().identifier 将在资源未找到或名称不匹配时始终返回 0。
【讨论】: