-
什么是布局
就是把界面中的控件按照某种规律摆放到指定的位置 -
布局的二种实现
代码
xml配置文件:res/layout目录下
注:也可以同时使用xml和代码 -
布局的基本属性
取值范围
{ //效果是一样的
fill_parent//过时
match_parent//不过时
}固定值
{
dp 控件大小
sp 文字大小
}padding 内补丁
margin 外补丁android:gravity和android:layout_gravity
用一个TextView、文字、背景查看效果最方便
android:gravity:控件内部的元素
android:layout_gravity:控件所在父元素的位置
但父元素的水平和垂直设置的优先度更高 -
案例2:线性布局(重点)
orientation=“vertical|horizontal”//垂直/水平
android:gravity:控件内部的元素(对内有效)
代码展示
<?xml version="1.0"?><LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="vertical"
android:gravity="left">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="左上按钮"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="左下按钮"
android:layout_marginTop="400dp"/>
-<LinearLayout
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="2.5">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="中间按钮"/>
-<LinearLayout
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="vertical"
android:gravity="right">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="右上按钮"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="右下按钮"
android:layout_marginTop="400dp"/>
-
案例3:android:gravity和android:layout_gravity的区别
7.1 android:gravity:控件内部的元素(对内有效)
android:layout_gravity:控件所在父元素的位置(对外生效)
7.2 特殊情况
父元素的android:orientation=“vertical”,layout_gravity 水平设置的相关属性有效
父元素的android:orientation=“horizontal”,layout_gravity 垂直设置的相关属性有效 -
案例4:LinearLayout布局中Layout_weight属性的作用
8.1 首先声明只有在Linearlayout中,layout_weight属性才有效。
8.2 它是用来指定(剩余空闲空间)的分割比例,而非按比例分配整个空间。
8.3 另外android:layout_weight会引起争议,是因为在设置该属性的同时,
设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果。
8.4 如果想用layout_weight平均分配空间,正确方式是将layout_width(或layout_height)设置为0dp,
再通过layout_weight按比例分配空间
注:关键点在于搞清楚什么是剩余空闲空间扫描二维码关注公众号,回复: 4213995 查看本文章 -
案例5:帧布局(就好象一张张卡片堆叠上去,后面会盖出前面的)
<?xml version="1.0" encoding="UTF-8"?>
FrameLayout
注:帧布局有点类似于awt的CardLayout都是把组件一个一个叠加到一起,
但CardLayout能将下面的组件移上来,但FrameLayout没有提供此功能
代码展示
<FrameLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
tools:context="com.example.myapplication3.MainActivity"
xmlns:tools="http://schemas.android.com/tools">
<TextView
android:layout_height="400dp"
android:layout_width="400dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/red"
android:id="@+id/tv_bottom1"/>
<TextView android:layout_height="350dp"
android:layout_width="350dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/orange"
android:id="@+id/tv_bottom2"/>
<TextView android:layout_height="300dp"
android:layout_width="300dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/yellow"
android:id="@+id/tv_bottom3"/>
<TextView
android:layout_height="250dp"
android:layout_width="250dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/green"
android:id="@+id/tv_bottom4"/>
<TextView
android:layout_height="200dp"
android:layout_width="200dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/teal"
android:id="@+id/tv_bottom5"/>
<TextView
android:layout_height="150dp"
android:layout_width="150dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/blue"
android:id="@+id/tv_bottom6"/>
<TextView
android:layout_height="100dp"
android:layout_width="100dp"
android:textSize="30dp"
android:layout_gravity="center"
android:background="@color/purple"
android:id="@+id/tv_bottom7"/>
![线性布局+帧布局同时使用](https://img-blog.csdn.net/20181020235344983?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tpZFNobWlseQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ImageView src scaleType="fitXY" XY方向拉伸
android:scaleType="fitXY"
android:src="@drawable/img18"