2010/01/08

Android Activity 利用 setContentView 更換 Layout

Android 可以利用 setContentView 進行 Layout 的轉換,

如下 :

Layout 1 的 XML :
 程式碼
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
android:id="@+id/button1"
android:layout_width="145px"
android:layout_height="wrap_content"
android:text="轉換到 Layout 2"
android:layout_x="78px"
android:layout_y="45px"
/>
</AbsoluteLayout>

Layout 2 的 XML :
 程式碼
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
android:id="@+id/button2"
android:layout_width="145px"
android:layout_height="wrap_content"
android:text="轉換到 Layout 1"
android:layout_x="78px"
android:layout_y="135px"
/>
</AbsoluteLayout>

Java 程式碼 :
 程式碼

public class helloWorld extends Activity {

Button b1 = null;

/** Called when the activity is first created. */
@Override

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLayout( 1 );
}

// 設定 Layout
public void setLayout(final int layoutNum)
{
// 設定 Layout 與找出 Button 物件
if( layoutNum == 1 )
{
setContentView(R.layout.main);
b1 = (Button)findViewById( R.id.button1 );
}
else
{
setContentView(R.layout.main2);
b1 = (Button)findViewById( R.id.button2 );
}

// 建立 Button onClick Trigger
b1.setOnClickListener( new OnClickListener(){
public void onClick(View v) {
setLayout( (layoutNum == 1) ? 2 : 1 );
}
});
}
}

範例結果 :