我有一个复杂的动态视图,包含多个子级和父级。 我正在使用settags为视图设置标签。 一个EditText视图的标记值为“1”。
当我尝试使用findViewWithTag检索View时,我得到空响应。
以下是我的代码。
//Set Tag
EditText editText = new EditText(getApplicationContext());
LinearLayout.LayoutParams editTextParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
editText.setLayoutParams(editTextParams);
editText.setPadding(0,eight,0,eight);
editText.setTag("1");
// Get Tag
EditText et =(EditText)home.getRootView().findViewWithTag("1");
答案 0 :(得分:0)
我通过使用以下方法解决了它。由于每个视图都有一个唯一的ID,因此我将视图放在ArrayList的第一个位置,用于每个标记。
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;
}