2012-04-19 149 views
4

我是使用android開發新手。我有一個網格包含在LinearLayout中,每個組成網格的項目都是一個按鈕。我希望這個LinearLayout在用戶按下這些按鈕時不可見。SetVisibility不起作用?

這是我的「家」的佈局殼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <TextView/> 
    <LinearLayout> //<-- this is the layout I want to hide 
    <TextView/> 
    <GridView/> 
    </LinearLayout> 
</LinearLayout> 

,這是(用於膨脹按鈕)

@Override 
public void onClick(View v) { 
    View convertView = activity.getLayoutInflater().inflate(R.layout.layout_home, null); 
    LinearLayout ll_options = (LinearLayout) convertView.findViewById(R.id.ll_options); 
    ll_options.setVisibility(View.INVISIBLE); 
} 

我覺得我已經在MyArrayAdapter成立的onClick方法應該可以工作,但是當我測試它時,什麼也沒發生

我發現了一個類似的問題,但它不能解決我的問題。

回答

8

你爲什麼在這裏充氣佈局?:

View convertView = activity.getLayoutInflater().inflate(R.layout.layout_home, null); 

只要做到:

View v = activity.findViewById(R.id.ll_options); 
v.setVisibility(View.INVISIBLE); 
+0

所有的問題,這是錯誤的。謝謝你的快速聲音! – dnaranjo 2012-04-22 15:58:31

0

編輯:

哪裏是你的按鈕?它是否在同一個佈局文件中? 你膨脹新佈局並在那裏隱藏LinearLayout,但是這個新的佈局從不使用。確保您有權訪問監聽器中的contentView。

2

你,直到你加它那裏創建一個新的觀點是不可見的視圖層次,以及那麼你就隱藏了它。所以你隱藏了一些隱形的東西。

相反,嘗試:

@Override 
public void onClick(View v) { 
    findViewById(R.id.ll_options).setVisibility(View.INVISIBLE); 
} 

應該IMO工作。它在您的活動的可見(全局)視圖層次結構內搜索ll_options視圖並隱藏該視圖。

+0

這是對的,雖然你可能更喜歡'View.GONE'到'View.INVISIBLE',這取決於應用程序。 – mlc 2012-04-19 23:04:33

+0

是的,取決於你是否想釋放視圖佔用的空間(GONE)或只是隱藏它,但保留它的空間(INVISIBLE),只要將它設置爲不可見,如果從視圖中切換到可見和不可見層次結構不會改變 – zapl 2012-04-19 23:07:01