##1·LinearLayout布局的嵌套 下图为三个线性布局嵌套的结果。最外层为一个水平排列的线性布局,内层为两个垂直排列的线性布局, 其中每一个包含两个文本框。android
###1.1·实现:布局
首先,外层为水平排列的线性布局测试
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:orientation="horizontal"> </LinearLayout>
而后在里面添加两个垂直排列的线性布局,每一个含两个文本框:code
第一个xml
<LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="10dp" android:padding="5dp" android:background="@drawable/border"<!--给边框设置的颜色,详情见附录--> android:orientation="vertical"> <TextView android:id="@+id/textView_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00FFFF" android:textSize="15sp" android:text="文本框1"/> <TextView android:id="@+id/textView_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff0000" android:textSize="15sp" android:text="文本框2"/> </LinearLayout>
第二个:游戏
<LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/border" android:padding="5dp" android:layout_margin="10dp" android:orientation="vertical"> <TextView android:id="@+id/textView_3" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00ff00" android:textSize="15sp" android:text="文本框3"/> <TextView android:id="@+id/textView_4" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff0000" android:textSize="15sp" android:text="文本框4"/> </LinearLayout>
至此,咱们就完成了一个线性布局嵌套-----水平方向的线性布局嵌套两个垂直方向的线性布局:图片
##2·layout_weight属性 ###2.1·做用: 子控件占父控件的空余空间的比例utf-8
例: 控件1和控件2的layout_weight属性值都设置为1的话。it
它们将平分父控件的空闲空间,其效果为:io
为了方便理解,咱们用刚才的代码作个试验:
咱们把文本框3和4的layout_weight属性设置为1,文本框1和2不变,效果为:
父控件白色空余部分平均分配给了文本框3和4.
注意,平均分配的部分仅仅是父控件的空余空间。两个子控件所占空间并不是必定相等。
一样的代码,我仅仅将文本框3的文本内容多增长了一点,就是这样一种效果。 layout_weight为1的话,子控件并不是必定相等,它们仅仅是平均分配了父控件的空余空间而已。
###2.2·精确控制子控件在整个父控件中所占比例 假如,咱们想要让两个子控件在父控件中精确的占据三分之一,和三分之二的空间。
那么咱们只需将:
这时的效果为:
如此,咱们就实现了,精确控制两个子控件分别占据整个父控件的三分之一和三分之二。 ##3·练习 实现这样的布局:
###3.1实现: 最外层一个垂直方向的线性布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout>
第一部分为一个文本域: (内容居中使用gravity属性)
<TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="猜拳游戏" android:textSize="20dp" android:gravity="center"/>
接着是一个按钮(中间那个复杂的部分留在最后来实现):
<Button android:id="@+id/startBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="肯定"/>
接着是两个文本域,它们须要放在水平的线性布局里:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout>
在水平的线性布局里放入两个宽度同样的文本域:
<TextView android:id="@+id/resultTextView" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="结果"/> <TextView android:id="@+id/testResultTextView" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="测试结果"/>
最后是,中间复杂的部分。
首先,是一个水平线性布局:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout>
而后在这个线性布局中,又包含两个宽度相等的垂直线性布局:
<LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout>
而后在两个垂直线性布局中,各有一个图片视图:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/z"/>
最后在图片下面有一组单选按钮:
<RadioGroup android:id="@+id/radioGroup_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/radioBtn_Cut_A" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="剪刀"/> <RadioButton android:id="@+id/radioBtn_Rock_A" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="石头"/> <RadioButton android:id="@+id/radioBtn_Cloth_A" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="布"/> </RadioGroup>
这样,就完成了。
##4·附录 给边框设置颜色:
首先,在res目录下的drawable文件夹下建立一个border.xml 而后替换为如下代码,以后在经过android:background="@drawable/border.xml"调用便可。:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <stroke android:width="1dp" android:color="#000000" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> </shape>