我有相同的View
多次膨脹(來自XML)。當我打電話給findViewById(R.id.my_layout).setVisibility(View.GONE)
時,我想將其應用於所有此類視圖。findViewById返回數組視圖
我該怎麼做?
我有相同的View
多次膨脹(來自XML)。當我打電話給findViewById(R.id.my_layout).setVisibility(View.GONE)
時,我想將其應用於所有此類視圖。findViewById返回數組視圖
我該怎麼做?
沒有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);
}
}
如果上述選項沒有爲你工作,請你爲什麼這樣做闡述。
對View
進行修改,其中包含充氣佈局。
E.g:
如果你有
View v = inflater.inflate(....);
更改知名度到了這一觀點。 v.setVisibility(View.GONE);
如果我只適用於一個,我該如何識別? – Taranfx
我不明白。如果你想唯一標識一個'View',你需要給它一個唯一的ID,或者使用'View.setTag()'方法來存儲具有'View'的自定義數據。 –