我有多次View
膨胀(来自XML)。当我致电findViewById(R.id.my_layout).setVisibility(View.GONE)
时,我想将其应用于所有此类观点。
我该怎么做?
答案 0 :(得分:11)
没有findViewById()
版本可以返回所有匹配项;它只返回第一个。您有几个选择:
当您对它们进行充气时,请将引用存储在ArrayList
中,如下所示:
ArrayList<View> mViews = new ArrayList<View>();
然后当你膨胀时:
LayoutInflater inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mViews.add(inflater.inflate(R.layout.your_layout, root));
然后当你想隐藏它们时:
for (View v : mViews) { v.setVisibility(View.GONE); }
根据您对这些视图的操作,父布局可能有一种访问方式。例如,如果你将它们放在ListView
或其他类似物中。如果您知道父元素,则可以遍历子元素:
ViewGroup parent = getParentSomehow();
for (int i = 0; i < parent.getChildCount(); ++i) {
View v = parent.getChildAt(i);
if (v.getId() == R.id.my_layout) {
v.setVisibility(View.GONE);
}
}
如果以上选项对您不起作用,请详细说明您为何这样做。
答案 1 :(得分:1)
修改包含虚增布局的View
。
E.g:
如果你有
View v = inflater.inflate(.... );
您可以在此视图中更改可见性。 v.setVisibility(View.GONE);