2010-07-26 62 views

回答

319

您可以取代在任何時間任何觀點。

int optionId = someExpression ? R.layout.option1 : R.layout.option2; 

View C = findViewById(R.id.C); 
ViewGroup parent = (ViewGroup) C.getParent(); 
int index = parent.indexOfChild(C); 
parent.removeView(C); 
C = getLayoutInflater().inflate(optionId, parent, false); 
parent.addView(C, index); 

如果你不想更換現有查看,但在初始化時選項1 /選項2之間選擇,那麼你可以這樣做更容易:

ViewGroup parent = (ViewGroup) findViewById(R.id.parent); 
View C = getLayoutInflater().inflate(optionId, parent, false); 
parent.addView(C, index); 
:父佈局,然後設置 android:id

根據視圖結構,您必須將「索引」設置爲適當的值。你也可以使用一個ViewStub:增加你的C視圖ViewStub然後:

ViewStub C = (ViewStub) findViewById(R.id.C); 
C.setLayoutResource(optionId); 
C.inflate(); 

這樣,你就不必擔心上面的「指數」值,如果你將要調整你的XML佈局。

+0

我必須刪除片段,還是將片段也刪除? – 2014-07-07 23:59:56

+3

@KarlMorrison這個問題已經快4年了,與碎片無關。我建議提交一個新問題和/或看一下'android.app.FragmentTransaction',它是'replace()'方法。 – lupz 2014-07-11 09:13:41

+0

這太遺憾了你的回答太複雜了 - 對於新手Android程序員來說:-( – 2015-02-04 21:07:09

36

如果你這樣做,很多時候,你可以使用一個ViewSwitcherViewFlipper緩解視圖替換。

+0

是,如果有交替的看法問題,然後查看鰭/切換器是更好地使用 – Zoombie 2011-08-04 15:10:39

+7

@snicolas ......你可以用一些代碼解釋吧。 – 2012-11-21 13:55:50

+2

@Shail Adi,你是否嘗試使用ViewSwitcher教程代碼? – Snicolas 2012-11-21 14:03:26

相關問題