页面布局Layout

1、编写XMl

<1>、利用 Android 的 XML 词汇,按照在 HTML 中创建包含一系列嵌套元素的网页的相同方式快速设计 UI 布局及其包含的屏幕元素 。

<2>、每个布局文件都必须只包含一个根元素,并且该元素必须是视图对象或 ViewGroup 对象 。

<3>、定义根元素后,可以子元素的形式添加其他布局对象或控件,从而逐步构建定义布局的视图层次结 构 在 XML 中声明布局后,以 .xml 扩展名将文件保存在Android 项目的 res/layout/ 目录中 。

2、加载XML

当编译应用时,系统会将每个 XML 布局文件编译成 View 资源。在 Activity.onCreate() 回调 内,通过调用 setContentView() ,并以 R.layout.*layout_file_name* 形式向应用代码传 递布局资源的引用 ,加载应用代码中的布局资源。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

3、属性

每个 View 对象和 ViewGroup 对象均支持自己的各种 XML 属性 。某些属性是 View 对象的特有 属性(例如,TextView 支持 textSize 属性),但可扩展此类的任一 View 对象也会继承这些属 性。某些属性是所有 View 对象的共有属性,因为它们继承自 View 根类(例如 id 属性)。此 外,其他属性被视为“布局参数”,即描述 View 对象特定布局方向的属性,如由该对象的父 ViewGroup 对象定义的属性。

4、ID

任何 View 对象均可拥有与之关联的整型 ID,用于在结构树中对 View 对象进行唯一标识。编译应 用后,系统会以整型形式引用此 ID,但在布局 XML 文件中,系统通常会以字符串的形式在 id 属性中指定该 ID。这是所有 View 对象共有的 XML 属性(由 View 类定义),并且你会经常使 用该属性。

XML 标记内部的 ID 语法是

android:id="@+id/id_name"

字符串开头处的 @ 符号指示 XML 解析器应解析并展开 ID 字符串的其余部分,并将其标识为 ID 资 源。加号 (+) 表示这是一个新的资源名称,必须创建该名称并将其添加到我们的资源(在 R.java 文件中)内。Android 框架还提供许多其他 ID 资源。引用 Android 资源 ID 时,不需要加号,但 必须添加 android 软件包命名空间

android:id="@android:id/empty"

添加 android 软件包命名空间后,我们从 android.R 资源类而非本地资源类引用 ID R.java 文件

 @+id 和 @id区别: 其实@+id就是在R.java文件里新增一个id名称,如果之前已经存在相同的id名称,那么会覆盖之 前的名称。而@id则是直接引用R.java文件的存在的id资源,如果不存在,会编译报错。
注意: ID 字符串名称,在同一布局中必须是唯一的,不能重名,不同布局中可以同名;

通过ID值创建我们视图对象的实例 
 

 <TextView
        android:id="@+id/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        />
TextView textView = findViewById(R.id.hello_world);

5、常用布局

<1>、线性布局LinearLayout

LinearLayout 是一个视图容器,用于使所有子视图在单个方向(垂直或水平)保持对齐。可已使用 android:orientation 属性指定布局方向。

android:orientation="horizontal" //水平方向

android:orientation="vertical" //垂直方向

布局权重 android:layout_weight 通过给子视图设置权重值,来分配子视图所占空间的权重(比例),如图三个子视图权重分别设置 为1,均分页面空间

<2>、 相对布局 - RelativeLayout 

相对布局 :子视图可通过相应的布局属性,设定相对于另一个兄弟视图或父视图容器的相对位置 属性说明:

1、相对于兄弟元素   
 

属性名称属性含义
android:layout_below="@id/name"在指定View的下方
android:layout_above="@id/name"在指定View的上方
android:layout_toLeftOf="@id/name"在指定View的左边
android:layout_toRightOf="@id/name"在指定View的右边
android:layout_alignTop="@id/name"与指定View的上边界一致
android:layout_alignBottom="@id/name"与指定View下边界一致
android:layout_alignLeft="@id/name"与指定View的左边界一致
android:layout_alignRight="@id/name"与指定View的右边界一致

2、相对于父元素

属性名称属性含义
android:layout_alignParentLeft="true"在父元素内左边
android:layout_alignParentRight="true"在父元素内右边
android:layout_alignParentTop="true"在父元素内顶部
android:layout_alignParentBottom="true"在父元素内底部

3、对齐方式
 

属性名称属性含义
android:layout_centerInParent="true"居中布局
android:layout_centerVertical="true"垂直居中布局
android:layout_centerHorizontal="true"水平居中布局

4、间隔

 

属性名称属性含义
android:layout_marginBottom="  "离某元素底边缘的距离
android:layout_marginLeft="  "离某元素左边缘的距离
android:layout_marginRight ="  "离某元素右边缘的距离
android:layout_marginTop="  "离某元素上边缘的距离
android:layout_paddingBottom="  "往内部元素底边缘填充距离
android:layout_paddingLeft="  "往内部元素左边缘填充距离
android:layout_paddingRight ="  "往内部元素右边缘填充距离
android:layout_paddingTop="  "往内部元素右边缘填充距离

父容器定位属性示意图
 

根据兄弟组件定位
 

 帧布局 - FrameLayout 

最简单的一种布局,没有任何定位方式,当我们往里面添加控件的时候,会默认把他们放到这块区 域的左上角,帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件,后续添加的控件会覆盖前一个 。

 

网格布局 GridLayout 

属性说明:

名称含义
android:columnCount列数
android:rowCount行数
android:layout_columnSpan横跨的列数
android:layout_rowSpan横跨的行数


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米兰的糖果罐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值