Android 布局管理器 之 LinearLayout
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中添加按钮: