Shl*_*rtz 60
干得好:
private static ArrayList<View> getViewsByTag(ViewGroup root, String tag){
ArrayList<View> views = new ArrayList<View>();
final int childCount = root.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = root.getChildAt(i);
if (child instanceof ViewGroup) {
views.addAll(getViewsByTag((ViewGroup) child, tag));
}
final Object tagObj = child.getTag();
if (tagObj != null && tagObj.equals(tag)) {
views.add(child);
}
}
return views;
}
Run Code Online (Sandbox Code Playgroud)
我已在这里回答:Android - 如何使用common属性查找多个视图
您可以通过以下方式为视图设置标记:
someView.setContentDescription("MyTag");
Run Code Online (Sandbox Code Playgroud)
然后,为了找到您需要调用该标记的所有视图:
ArrayList<View> outputViews = new ArrayList<>();
rootView.findViewsWithText(outputViews, "MyTag", FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
Run Code Online (Sandbox Code Playgroud)
一种方法是从父ViewGroup开始,循环遍历其子项(及其子项等),然后检查每一个上的标记.
归档时间: |
|
查看次数: |
32569 次 |
最近记录: |