2013-05-21 192 views
0

我有一個Android應用程序,我隱藏並顯示頁面上的不同自定義項目。有沒有辦法循環頁面上設置爲view.gone的所有項目,或者我將不得不爲每個ID做一個if?有沒有辦法找到頁面上的所有View.GONE元素?

非常感謝

+0

頁面你的意思是佈局? – Blackbelt

+0

對不起,它們隱藏在代碼中,但它的佈局我的意思是 – TMB87

+0

你可以遍歷整個UI樹(比如HierarchyViewer),但是這太慢而不實用。您最好查看已知ID的列表,如果您已將某些查找緩存到某個位置,例如在自定義視圖的實例字段中或查看保存器中,則更好。 – Barend

回答

1

要找到隱藏的意見,你可以這樣做:

LinearLayout parentLayout = (LinearLayout) findViewById(R.id.parent_layout); 

    int childViews = parentLayout.getChildCount(); 
    List<View> hiddenViews = new ArrayList<View>(); 

    for (int i = 0; i < childViews; i++) { 
     View v = parentLayout.getChildAt(i); 
     if (v.getVisibility() == View.GONE) { 
      hiddenViews.add(v); 
     } 
    } 

在這個例子中,List<View> hiddenViews將包含與View.GONE知名度所有視圖。

1

當您將他們的可見性設置爲GONE時,同時將它們添加到預先設定的arraylist,這樣您將始終有一個不可見的視圖記錄。

In OnCreate: 
hiddenViews = new ArrayList<View>(); 

在設定自己的知名度:

view.setVisibility(View.GONE); 
hiddenViews.add(view); 

現在,你可以在任何時候內activity訪問hiddenViews的ArrayList。

相關問題