Android XML布局


前言

今天我们来简单介绍一下Android的XML布局以及三种常见的XML布局


目录


1.XML布局的优点

在XML文件中设计UI可以更好地将应用的外观与控制应用行为的代码隔离,每次修改或调整界面布局只需要修改XML文件的代码而不是修改源码和重新编译。


2.XML布局基础介绍

2.1 调用XML布局

在编译XML布局文件时,都需要通过main函数中的 onCreate 来调用,通常使用如下方式来进行调用。

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_linear_layout);}

其中setContentView里的内容‘R’为就是系统给声明的静态变量,所有的子类都是通过‘R’来调用。而‘R’的路径则是 Android 工程路径下的 app -> src -> main -> res 下。
R.layout指res文件夹下一个名为layout的文件夹,而R.layout.activity_linear_layout之后的部分则是layout文件夹下自己定义的.xml文件。

2.2 XML布局的常见属性

属性 描述
ID 控件名字,是当前控件的唯一标识,常用字符串表示
background 调整当前界面背景
gravity 调整所有控件所在的整体位置
layout_width 当前界面整体宽度,常用wrap_content和match_parent
layout_height 当前界面整体高度,常用wrap_content和match_parent
padding 调整屏幕边距,可以整体调整或者单项调整
text 控件显示文本,可调用values文件夹中的strings.xml来显示文本内容
textColor 显示文本颜色,可调用values文件夹中的color.xml来定义
textSize 显示文本字体大小,单位常用dp和px
textStyle 显示文本字体风格,可选的有斜体和粗体

3.常见的三种简单XML布局

3.1 LinearLayout

这一种使用单个水平行或垂直行来组织子项的布局,是风格最简单的布局。

<LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/textView"android:layout_alignParentLeft="false"android:layout_alignParentStart="true"android:weightSum="1"android:id="@+id/linearLayout"android:layout_alignParentTop="false"android:layout_alignWithParentIfMissing="false"android:layout_alignParentRight="false"android:layout_alignParentBottom="false"android:background="#000000"><TextViewandroid:layout_width="wrap_content"android:layout_height="match_parent"android:textAppearance="?android:attr/textAppearanceSmall"android:text="One,One"android:id="@+id/textView2"android:textSize="16dp"android:gravity="center_horizontal"android:layout_weight="0.19"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="One,Two"android:id="@+id/textView3"android:textSize="16dp"android:layout_weight="0.34"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="One,Three"android:id="@+id/textView4"android:layout_weight="0.27"android:textSize="16dp"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="One,Four"android:id="@+id/textView5"android:textSize="16dp"android:gravity="center_horizontal"android:textColor="#ffffff" /></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_below="@+id/linearLayout"android:weightSum="1"android:id="@+id/linearLayout2"android:background="#000000"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Two,One"android:id="@+id/textView6"android:textSize="16dp"android:layout_weight="0.13"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Two,Two"android:id="@+id/textView7"android:textSize="16dp"android:layout_weight="0.41"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Two,Three"android:id="@+id/textView8"android:textSize="16dp"android:layout_weight="0.25"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Two,Four"android:id="@+id/textView9"android:textSize="16dp"android:gravity="center_horizontal"android:textColor="#ffffff" /></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/linearLayout2"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:weightSum="1"android:id="@+id/linearLayout3"android:background="#000000"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Three,One"android:id="@+id/textView10"android:textSize="16dp"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Three,Two"android:id="@+id/textView11"android:textSize="16dp"android:layout_weight="0.38"android:gravity="center_horizontal"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Three,Three"android:id="@+id/textView12"android:textSize="16dp"android:gravity="center_horizontal"android:layout_weight="0.26"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Three,Four"android:id="@+id/textView13"android:textSize="16dp"android:gravity="center_horizontal"android:textColor="#ffffff" /></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/linearLayout3"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:weightSum="1"android:background="#000000"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Four,One"android:id="@+id/textView14"android:gravity="center_horizontal"android:textSize="16dp"android:layout_weight="0.14"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Four,Two"android:id="@+id/textView15"android:gravity="center_horizontal"android:textSize="16dp"android:layout_weight="0.37"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Four,Three"android:id="@+id/textView16"android:gravity="center_horizontal"android:textSize="16dp"android:layout_weight="0.20"android:textColor="#ffffff" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="Four,Four"android:id="@+id/textView17"android:gravity="center_horizontal"android:textSize="16dp"android:layout_weight="0.15"android:textColor="#ffffff" /></LinearLayout>

代码结果截图

3.2 RelativeLayout

相对布局让您能够指定子对象彼此之间的相对位置(子对象 A 在子对象 B 左侧)或子对象与父对象的相对位置(与父对象顶部对齐),自由度是最大的一种布局。

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.relativelayout.MainActivity"android:background="#090505"><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Red"android:id="@+id/textView"android:layout_alignParentTop="true"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:padding="3dp"android:background="#ff0000"android:textSize="25dp"android:gravity="center_horizontal"android:layout_toLeftOf="@+id/textView4"android:layout_toStartOf="@+id/textView4" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Orange"android:id="@+id/textView2"android:padding="3dp"android:background="#ff7700"android:textSize="25dp"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:gravity="center_horizontal" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Yellow"android:id="@+id/textView3"android:layout_alignParentTop="true"android:layout_alignParentRight="true"android:layout_alignParentEnd="true"android:padding="3dp"android:background="#ffd500"android:textSize="25dp"android:gravity="center_horizontal" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Green"android:id="@+id/textView4"android:layout_marginTop="50dp"android:padding="3dp"android:background="#1eff00"android:textSize="25dp"android:gravity="center_horizontal"android:layout_below="@+id/textView"android:layout_toLeftOf="@+id/textView2"android:layout_toStartOf="@+id/textView2" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Blue"android:id="@+id/textView5"android:layout_alignTop="@+id/textView4"android:layout_centerHorizontal="true"android:padding="3dp"android:background="#001eff"android:textSize="25dp"android:gravity="center_horizontal" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Indigo"android:id="@+id/textView6"android:padding="3dp"android:background="#9000ff"android:textSize="25dp"android:gravity="center_horizontal"android:layout_alignTop="@+id/textView5"android:layout_toRightOf="@+id/textView2"android:layout_toEndOf="@+id/textView2" /><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="Violet"android:id="@+id/textView7"android:layout_below="@+id/textView5"android:layout_marginTop="48dp"android:padding="3dp"android:background="#ff00b7"android:textSize="25dp"android:gravity="center_horizontal"android:layout_toLeftOf="@+id/textView3"android:layout_alignLeft="@+id/textView4"android:layout_alignStart="@+id/textView4" />
</RelativeLayout>

代码结果截图

3.3 TableLayout

显示滚动的单列列表,在手机的设置里基本就是使用这种布局。

<TableLayout 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:stretchColumns="1"tools:context="com.example.tablelayout.MainActivity"android:background="#080404"><TableRow
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:text="Open..."android:layout_column="1"android:padding="3dp"android:textSize="20dp"android:textColor="#fefefe" /><TextView
            android:text="Ctrl-O"android:layout_column="2"android:padding="3dp"android:textSize="20dp"android:gravity="right"android:textColor="#ffffff" /></TableRow><TableRow
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:text="Save..."android:layout_column="1"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /><TextView
            android:text="Ctrl-S"android:layout_column="2"android:padding="3dp"android:textSize="20dp"android:gravity="right"android:textColor="#ffffff" /></TableRow><TableRow
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:text="Save As..."android:layout_column="1"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /><TextView
            android:text="Ctrl-Shift-S"android:padding="3dp"android:textSize="20dp"android:gravity="right"android:textColor="#ffffff" /></TableRow><View
        android:layout_height="3dp"android:background="#ffffff" /><TableRow
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:text="X"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /><TextView
            android:text="Import..."android:layout_column="1"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /></TableRow><TableRow
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:text="X"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /><TextView
            android:text="Export"android:layout_column="1"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /><TextView
            android:text="Ctrl-E"android:padding="3dp"android:textSize="20dp"android:gravity="right"android:textColor="#ffffff" /></TableRow><View
        android:layout_height="3dp"android:background="#ffffff" /><TableRow
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:text="Exit"android:layout_column="1"android:padding="3dp"android:textSize="20dp"android:textColor="#ffffff" /></TableRow>
</TableLayout>

代码结果截图


4.总结

XML布局是一种非常简单实用的布局,在一些简单的应用开发中合理的使用XML布局可以更快的完成布局的实现。


作者:黄毅
原文链接:点击这里

简单的Android XML布局使用相关推荐

  1. Android ——XML布局实现桌面台球的开始界面

    Android--XML布局实现桌面台球的开始界面 桌面台球的游戏界面 1.在一个工程中建立一个新的模块 选择File→New→New Module 然后依次按照下图完成创建. 2.将桌面台球背景图b ...

  2. 仿微信、短信、QQ等消息数目右上角红色小圆球气泡显示(基于Android XML布局文件实现)

    效果图如下: 仿微信.短信.来电未接数目.QQ等消息数目右上角红色小圆球气泡显示(基于Android XML布局文件实现).这种实现方式主要有两种途径:(1)重写View的onDraw().(2)写布 ...

  3. android 首页布局变换,Android XML布局与View之间的转换

    Android的布局方式有两种,一种是通过xml布局,一种是通过java代码布局,两种布局方式各有各的好处,当然也可以相互混合使用.很多人都习惯用xml布局,那xml布局是如何转换成view的呢?本文 ...

  4. android xml转换成svg,如何将Android xml布局转换为png / svg以在iOS版本中使用

    我这里有一个 Android布局xml文件: android:id="@+id/locationMarker" android:layout_width="wrap_co ...

  5. 【android-tips】android xml布局总结篇

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 一.背景         可能很多人跟我一样,做了好久的android程序,却一直没有认真地坐下来好好学习下xm ...

  6. android xml ignore,工具:ignore =“UselessParent”是什么意思在Android XML布局文件中?...

    在你的情况 tools:ignore="UselessParent" 告诉你的IDE,以避免显示如下消息:"这RelativeLayout的布局或它的LinearLayo ...

  7. Android xml布局view进行任意角度的旋转

    代码实现: layout.setOritation(int Degree); 注意这里是错的,应该是:layout.setRotation(int Degree); XML实现: 设置android: ...

  8. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  9. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

最新文章

  1. 业界 |「多巴胺」来袭!谷歌推出新型强化学习框架Dopamine
  2. Spring Boot 注册 Servlet 的三种方法,真是太有用了!
  3. 性能优化技巧 - 组表数据更新
  4. 在JavaScript中使用json.js:访问JSON编码的某个值
  5. easyGUI 用法介绍
  6. php 分割二维数组,拆分二维数组 php
  7. 打造×××互连无极限,多WAN口×××防火墙
  8. python编程总结
  9. Mac 登陆Linux云服务器方法
  10. python为什么那么多人点赞_python为何会火遍全球?它究竟是什么呢?阿里大佬告诉你答案...
  11. Embedding技术在房产推荐中的应用(文末附PPT下载链接)
  12. 创建队列 c语言_在C中创建队列
  13. jquery.serialize
  14. linux中pak命令,Linux下Flatpak的安装与使用超详细教程
  15. js 上传文件到 minio
  16. 14个优化网站性能提高网站访问速度技巧
  17. win11怎么看激活状态
  18. 浙江中医药大学第十二届大学生程序设计竞赛 Wpremig的AH之战
  19. 入射波反射波和驻波的特性推导
  20. AltiumDesigner PCB案牍(2)——自定义原理图模板

热门文章

  1. 客户体验管理 + ServiceNow:提供客户服务和体验的新标准
  2. 修改人人商城支付后报错“服务器暂时无法处理您的请求,请稍后重试“
  3. python检查https过期_Python实现HTTPS网站证书过期监控及更新
  4. YoloV4当中的Mosaic数据增强方法(附代码讲解)
  5. git log 数据统计 与 git blame 代码作者查询
  6. 华三模拟器之OSPF实验
  7. 美味冰皮月饼的做法 月饼的做法
  8. 【办公-excel】Excel批量翻译
  9. kindle亚马逊个人文档不显示_Kindle个人文档服务
  10. Ninja ripper 工具使用教程