1. 程式人生 > >android 動態切換view

android 動態切換view

需求情形:需要在一個activity中更換佈局,如點選按鈕,跳轉到另外一個介面。

如果兩個佈局檔案都是LinearLayout 或者FrameLayout的話,可以使用LinearLayout和FrameLayout兩個類來管理當前的layout,如addView 或者removeView;可是如果一個是LinearLayout,另外一個是FrameLayout的話,這種就不行了,因為兩者的屬性不同,表現結果不一樣。

解決辦法:使用不同的Layout的xml檔案或者動態設定View。

關鍵語句:setContentView(R.layout.XXX)或者setContentView(XXXView)

第一個直接使用layout xml檔案,第二個使用動態生成一個LinearLayout 或者FrameLayout。

前者的好處是方便使用xml中的android:屬性。

關鍵坑:如果xml檔案中使用的是繼承控制元件類(繼承的基礎的控制元件,如View Button TextView等),在初始化例項的時候,如果遇到使用強制型別轉換失敗,如:

XXXView myView = (XXXView)findViewById(R.id.XXXView)

呼叫的是public XXXView (Context context, AttributeSet attrs)建構函式。

可以例項化View,然後在轉成XXXView,如:

View imgView = findViewById(R.id.XXX);

XXXView  mView = (XXXView )imgView;

然後再去設定mView的其他需要使用引數初始化的東西。

經驗:遇到例項化失敗的情況,可以先不例項化,在xml中使用<X.X.X.XXXView  ...  />來宣告控制元件,在使用setContentView函式後看是否能夠正常顯示,正常顯示則證明public XXXView(Context context)建構函式是成功的,之後在去設定其他需要初始化的類屬性或者成員屬性。