Android中所有控制項都繼承自View,View及其子類的相關屬性既可以在布局XML檔案中進行配置,也可以通過成員變數在代碼中動態設定。
ViewGroup為View的子類,但是可以充當其他控制項的容器。ViewGroup的子控制項既可以是普通的View,也可以是ViewGroup,其採用Composite的設計模式。布局管理器都繼承自ViewGroup。
1.線性布局 LinearLayout
布局時可通過設定控制項的weight參數控制各個控制項在容器中的相對大小。
屬性名稱 |
對應方法 |
描述 |
android:orientation |
setOrientation(int) |
horizontal/vertical |
android:gravity |
setGravity(int) |
設定控制項的對齊,可取值top、buttom、left、right、center_vertical、center_horizontal、center、fill_vertical(縱向展開填滿容器)、fill_horizontal、fill |
linear_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="horizontal" android:id="@+id/lla1">
<Button android:id="@+id/bt1" android:text="Button1"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:id="@+id/bt2" android:text="Button1"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:id="@+id/lla2">
<Button android:id="@+id/bt3" android:text="Button3"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
<Button android:id="@+id/bt4" android:text="Button4"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
在mainActivity中添加以下代碼:
public class mainActivity extends Activity {
/** Called when the activity is first created. */
int count = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linear_layout);
Button bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
LinearLayout lla2 = (LinearLayout) findViewById(R.id.lla2);
String msg = mainActivity.this.getResources().getString(
R.string.button);//擷取資源
Button added = new Button(mainActivity.this);
added.setText(msg + (count++));
lla2.addView(added);
}
});
}
}
當點擊Button1時,會向第二個LinearLayout中添加按鈕: