1.LinearLayout(线性布局)
会将它所包含的控件在线性方向上依次排列
android:orientation="vertical"
orientation修改排列方向
layout_gravity用于指定控件在布局中的对齐方式
layout_weight允许使用比例的方式来指定控件的大小,它在手机屏幕的适配性方面可以起到非常重要的作用
2.RelativeLayout(相对布局)
它可以通过相对定位的方式让控件出现在布局的任何位置
layout_alignParentLeft、layout_alignParentTop、layout_centerInParent等属性控制控件在父布局中的位置
android: layout_above="@+id/button3"
android: layout_toLeftOf="@+id/button3"
layout_above等属性相对于控件进行定位
注意让一个控件去引用另一个控件的id时,该控件一定要定义在引用控件的后面,不然会出现找不到id的情况
3.FrameLayout(帧布局)
这种布局没有方便的定位方式,所有的控件都会默认摆放在布局的左上角。
<FrameLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="match_parent"
android:layout_height ="match_parent" >
<TextView
android:id ="@+id/text_view"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:layout_gravity ="left"
android:text ="This is TextView" />
<ImageView
android:id ="@+id/image_view"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:layout_gravity ="right"
android:src ="@mipmap/ic_launcher" />
</FrameLayout >
4.百分比布局
在这种布局中,我们可以不再使用wrap_content、match_parent等方式来指定控件的大小,而是允许直接指定控件在布局中所占的百分比,这样的话就可以轻松实现平分布局甚至是任意比例分隔布局的效果了。
由于LinearLayout本身已经支持按比例指定空间的大小了,因此百分比布局只为FrameLayout和RelativeLayout进行了功能扩展,提供了PercentFrameLayout和PercentRelativeLayout这两个全新的布局。
首先打开app/build.gradle文件,在dependencies闭包中添加如下内容:
dependencies {
compile fileTree(dir: 'libs' , include : ['*.jar' ])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2' , {
exclude group: 'com.android.support' , module : 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:percent:25.3.1'
testCompile 'junit:junit:4.12'
}
然后修改activity_main.xml中的代码:
<android.support.percent.PercentFrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id ="@+id/button1"
android:text ="Button 1"
android:layout_gravity="left|top"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
<Button
android:id ="@+id/button2"
android:text ="Button 2"
android:layout_gravity="right|top"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
<Button
android:id ="@+id/button3"
android:text ="Button 3"
android:layout_gravity="left|bottom"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
<Button
android:id ="@+id/button4"
android:text ="Button 4"
android:layout_gravity="right|bottom"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%" />
</android.support.percent.PercentFrameLayout>
最外层使用PercentFrameLayout,由于百分比布局不是内置在系统SDK当中的,所以需要把完整的包路径写出来。然后还必须定义一个app的命名空间,这样才能使用百分比布局的自定义属性。