2010-09-27 72 views

回答

175

我已經做到了,像這樣:

((ViewManager)entry.getParent()).removeView(entry); 
+7

@schwiz你偷了秀。很好的答案 – Sameer 2012-10-26 13:02:14

+31

在較新的SDKs中,它的'(ViewGroup)':) – Ron 2012-11-13 09:45:31

+0

@schwiz在這種情況下,我們如何重置視圖ID。我的問題是,即使在我的活動完成後,每當下一個視圖被添加視圖ID獲得遞增。當我再次返回到此活動時,希望視圖ID默認爲1。 – AndroidNewBee 2015-11-17 12:40:00

19

使用ViewStub並指定要切換的視圖的佈局。 查看:

mViewStub.setVisibility(View.VISIBLE) or mViewStub.inflate(); 

要消失:

mViewStub.setVisibility(View.GONE); 
+20

隱藏與刪除不一樣。 – Darkwater 2015-01-26 21:39:24

+0

如果你想隱藏/取消隱藏你可以使用.setVisibility(View.INVISIBLE)和.setVisibility(View.VISIBLE)。當視圖不可見時,用戶無法與之交互。 – dennisschagt 2015-08-28 19:07:38

+0

比方說,我有一個附加onClickListener的textView。如果我讓它消失,然後我點擊它,事件是否還會發生? – ahitt6345 2016-08-04 19:47:40

18

這是最好的方式

LinearLayout lp=new LinearLayout(this); 
lp.addView(new Button(this)); 
lp.addView(new ImageButton(this)); 
//Now remove them 
lp.removeViewAt(0); // and so on 

如果您有xml佈局,那麼不需要添加dynami cally.just調用

lp.removeViewAt(0); 
+0

在性能方面會有什麼差異?我的意思是動態添加它們或將它們放入一個靜態xml佈局文件並讓它膨脹的性能差異? – zgulser 2016-06-15 13:24:47

0

喜,如果你在Android上使用新的這樣 應用視圖,使其消失 GONE是單向的,否則,得到父視圖的保持,從取出 孩子有..... 別人得到父佈局,並使用此方法的刪除所有子 parentView.remove(孩子)

我會建議使用GONE方法...

+1

GONE將有效隱藏視圖,但不會將其從佈局中移除 – Sababado 2012-11-28 16:38:41

+1

簡單地使用parentView.remove(removeViewName); – 2012-11-29 04:26:48

+0

你說得對,但我試圖暗示你沒有通過提供「GONE」解決方案來回答問題。 – Sababado 2012-11-29 15:20:13

14

要添加視圖到佈局,你可以使用addView我類的ViewGroup的方法。例如,

TextView view = new TextView(getActivity()); 
view.setText("Hello World"); 

ViewGroup Layout = (LinearLayout) getActivity().findViewById(R.id.my_layout); 
layout.addView(view); 

還有一些刪除方法。檢查ViewGroup的文檔。 一個簡單的方法從佈局中刪除視圖可以像,

layout.removeAllViews(); // then you will end up having a clean fresh layout 
+3

removeAllViews()是我一直在尋找的! – Alan 2013-05-26 17:41:14

+0

removeAllViews()對我來說非常完美,謝謝。 – Aspicas 2015-04-15 06:46:04

7

對於改變的可視性:

predictbtn.setVisibility(View.INVISIBLE); 

,拆卸:

predictbtn.setVisibility(View.GONE); 
+0

它修復了我的問題,超過了其他所有答案。如果像我一樣有用,您的背景或某些參數會阻止視圖完全消失。 – Virthuss 2015-10-07 01:50:37

+1

這是因爲View.GONE不會刪除佈局的視圖,只會使其不可見,並且不會佔用任何空間用於佈局。 – Victor 2016-03-23 15:28:28

1

從薩米爾和亞伯Terefe大anwser。但是,當您刪除視圖時,按我的選擇,您想要刪除具有特定ID的視圖。這是你如何做到這一點。

1,給視圖一個ID,當你創建:

_textView.setId(index); 

2,刪除視圖與ID:

removeView(findViewById(index));