Android下有五大布局,分别是:
LinearLayout 线性布局
RelativeLayout 相对布局
AbsoluteLayout 绝对布局
TableLayout 表格布局
FrameLayout 帧布局
布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的界面。
1.LinearLayout
LinearLayout又称作线性布局,是一种非常常用的布局。通过android:orientation属性指定排列方向,垂直方向是vertical,水平方向是horizontal。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> </LinearLayout>
这段代码中设定了线性布局的方向是vertical,添加了三个按钮,效果:
然后我们将方向设定为horizontal就可以看到三个控件是水平排列的了。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="按钮1" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> </LinearLayout>
通过修改或添加一些属性,能够使得控件发生不同的变化。按钮1通过android:layout_gravity=”right”使得整个控件的位置位于屏幕的右侧。
按钮2的宽度修改为fill_parent同时通过android:gravity=”right”使得控件中的内容位于右侧。
布局中嵌套布局。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="按钮1" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> </LinearLayout> </LinearLayout>
Layout_weight 额外控件分配(权重)
Layout_weightSum
Layout_weightSum将布局中剩余的控件分为n份,单个控件通过Layout_weight设定值为x即可获得n份中的x份。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="按钮1" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:weightSum="2"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="按钮1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> </LinearLayout> </LinearLayout> <!-- Layout_weightSum Layout_weight 额外空间分配(权重) visibility 控制布局是否显示 显示:visible 不显示但占用空间:invisible 隐藏:gone -->