布局相当于一个透明的画布,本身是没有任何东西的,单纯的布局是不可见的,它的作用是定义在此画布上显示的规则.
比如线性布局就规定在其上的视图要么水平摆放,要么垂直摆放.
布局的实现有两种方式:
1.常用作法是在 /res/layout/ 下 添加一layout.xml
2.在Java中实现
如果界面结构比较简单或逻辑比较简单可采用方式1;反之,界面比较复杂或者界面中某部分可以批量生成(数独游戏中9*9的方格),或随机生成(星空),就需要用方式2了;
在Activity中引用此布局:
setContentView(R.layout.main); # main 与布局文件名一致
一:线性布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!--在此布局上的控件--> </LinearLayout>
# 用来指定布局方向 android:orientation="vertical" # 垂直方向 android:orientation="horizontal" # 水平方向
二:表格布局
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <Button android:text="1" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <Button android:text="2" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <Button android:text="3" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </TableRow> <!--每一行用TableRow--> <!--视图及布局都要放在TableRow中--> </TableLayout>
三:嵌套布局
嵌套布局就是布局上不仅可以放视图还可以放布局; 画布上面当然还可以再放一层画布,最后从垂直方向上,看到的还是一个画布,大概这样能理解就行了
<?xml version="1.0" encoding="utf-8"?> <!--嵌套布局--> <!--最外层Layout,垂直方向布局--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!--内层Layout1,水平方向布局--> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <Button android:text="h_A" android:layout_width="wrap_content" android:layout_height="fill_parent"/> <Button android:text="h_B" android:layout_width="wrap_content" android:layout_height="fill_parent"/> <Button android:text="h_C" android:layout_width="wrap_content" android:layout_height="fill_parent"/> </LinearLayout> <!--内层Layout1,水平方向布局--> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <Button android:text="verticalA" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Button android:text="verticalB" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Button android:text="verticalC" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout>
上述布局实现了这样的一个界面:
首先把界面上下分为两部分:上部分以水平方向添加三个按钮,下部分以垂直方向添加三个按钮.
实现思路是:整体界面看成是一个垂直方向的线性布局,然后上部分是一个水平方向的线性布局,下部分是一个垂直方向的线性布局.
下面我们换一种思路来实现这个界面.
我们把整个界面看成是一个2行*1列的表格.第一行是水平方向的线性布局,第二列是垂直方向的线性布局
<?xml version="1.0" encoding="utf-8"?> <!--嵌套布局--> <!--最外层TableLayout,两行一列--> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">> <!-- 第一行 --> <TableRow> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:text="horizontal_A" android:layout_width="wrap_content" android:layout_height="fill_parent"/> <Button android:text="horizontal_B" android:layout_width="wrap_content" android:layout_height="fill_parent"/> <Button android:text="horizontal_C" android:layout_width="wrap_content" android:layout_height="fill_parent"/> </LinearLayout> </TableRow> <!-- 第二行 --> <TableRow> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:text="vertical_A" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Button android:text="vertical_B" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Button android:text="vertical_C" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout> </TableRow> </TableLayout>
四:相对布局
<?xml version="1.0" encoding="utf-8"?> <!--相对布局--> <!--最外层Layout,垂直方向布局--> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10sp"> <TextView android:id="@+id/textView" android:text="please enter..." android:layout_width="fill_parent" android:layout_height="wrap_content" /> <!--android:layout_below="@id/textView" 指定editText 处于 textView 的下方--> <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/textView"/> <!--android:layout_below="@id/editText" 指定btn_ok位于editText的下方--> <!--android:layout_alignParentRight="true" 指定btn_ok向父视图的右边对齐--> <Button android:id="@+id/btn_ok" android:text="ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/editText" android:layout_alignParentRight="true"/> <!--android:layout_alignTop="@id/btn_ok" 指定btn_cancel和btn_ok最上方对齐--> <!--android:layout_toLeftOf="@id/btn_ok" 指定btn_cancel的右边与btn_ok的左边对齐--> <Button android:id="@+id/btn_cancel" android:text="cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/btn_ok" android:layout_toLeftOf="@id/btn_ok"/> <!--更多的的属性可以查看文档中RelativeLayout.LayoutParams的介绍--> </RelativeLayout>
如果想更好的使用相对布局,建议先理解CSS中的盒子模型,两者的理念基本雷同
五:自定义布局
自定义布局通常是在以上几种布局难以奏效或实现起来非常繁琐复杂的情况下的最后一招
在此仅展示基本用法, 没有太多技巧
1.线性布局使用示例
public class Sudoku extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 自定义一个线性布局 LinearLayout layout = new LinearLayout(this); // 定义线性布局对齐方向 layout.setOrientation(LinearLayout.HORIZONTAL); // 定义两个按钮视图 // 按钮的使用还要对其添加监听器 // 关于Listener的添加有各种形式,内部类,匿名内部类,Activity实现OnClickListener等等 // 各种用法都有各自的优缺点,具体选用哪种方式还要看具体需求及大家对此用法的体会心得 Button btn1 = new Button(this); btn1.setText("welovelincon"); Button btn2 = new Button(this); btn2.setText("weloveahcming"); // 定义一个视图的长,宽 // LinearLayout.LayoutParams.FILL_PARENT ==>android:layout_width="fill_parent" LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(150, 40); // 向布局上添加视图,并用指定的长宽 // 还可以在布局上添加布局 layout.addView(btn1, param); layout.addView(btn2, param); // 使用布局 setContentView(layout); } }
相关推荐
对于学习和进阶,Android Studio 4.0内置的学习资源和教程丰富多样,从新手入门到高级进阶,都能找到相应的指导,帮助开发者不断提升技能。 总的来说,尽管"android-studio-ide-193.6626763-windows.exe"不是...
为了帮助开发者更好地使用Android Studio,Google提供了丰富的官方文档、教程和示例代码,包括入门指南、进阶教程以及API参考。此外,全球的开发者社区,如Stack Overflow、GitHub等,也是获取帮助和分享经验的重要...
根据给定的“Android入门手册-中文版”的文件信息,我们可以从中提炼出一系列与Android开发相关的知识点,这些知识点覆盖了从Android系统的基本概念到实际应用开发的各个环节。下面,我们将详细解析这些知识点。 ##...
这个"Android入门学习-TextView"的资料很显然是为了帮助初学者理解和掌握如何在Android应用中有效地使用TextView。现在,让我们深入探讨一下TextView的相关知识点。 1. **TextView基本用法**:TextView用于在界面上...
《Android入门Demo——铁哥们通讯录》是一款简单的通讯录应用,旨在帮助初学者了解Android开发的基本流程和技术。在这个项目中,开发者实现了一个主界面和一个添加联系人的界面,以及一个展示联系人信息的列表。接...
总的来说,Android入门需要耐心和实践,从基础知识入手,逐步深入,不断学习新技术,才能在这个快速变化的领域中站稳脚跟。无论你是零基础的新手,还是希望提升技能的开发者,Android都为你提供了广阔的学习和发展...
### Android入门到精通-实训任务1-搭建Android开发环境 #### 一、实训目标与能力培养 本实训任务旨在帮助初学者快速掌握Android开发环境的搭建,并通过实践操作加深对Android开发基本流程的理解。实训完成后,学员...
Android-01-入门介绍(9集) Android-02-常用UI布局介绍(5集) Android-03-百度地图实战开发(10集) Android-04-HTTP协议编程(4集) Android-05-解析XML数据(3集) Android-06-解析JSON数据(4集) Android-07-...
在本压缩包“Android课程实验-线性布局实验-限制布局实验-表格布局实验-自制的浏览器.zip”中,包含了多个Android开发相关的实验项目,这些项目涵盖了Android UI设计的基础元素和核心概念。以下是对每个实验项目的...
【Android开发入门101-HelloAndroid.pdf】是针对初学者的一份教程,旨在引导学习者进入Android移动应用开发的世界。这份文档由MyMobiSoft Inc.创作并享有版权,内容涵盖从安装开发环境到创建并运行第一个Android应用...
Android控件与布局入门 - 简易计算器
【Android入门课程介绍】 在数字化世界中,Android操作系统占据着移动设备市场的主导地位,因此学习Android开发成为许多技术爱好者和职业开发者的重要技能。本课程专为初学者设计,旨在帮助学员快速掌握Android应用...
1. 入门介绍: 这部分主要是为初学者设计的,旨在帮助他们建立对Android开发环境的基本理解。内容可能包括安装Android Studio,配置开发环境,理解Android项目结构,以及编写第一个“Hello, World!”程序。此外,还...
总之,《Kotlin for Android Developers》这本书涵盖了从入门到进阶的全方位Kotlin知识,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过阅读这本书,你可以掌握Kotlin的精髓,提升Android应用的开发效率...
总的来说,Android入门需要理解基本的文件结构、关键文件的作用,以及如何使用Eclipse或Android Studio进行开发。掌握ADB命令能帮助开发者更有效地调试和管理应用。随着对Android平台的深入理解,开发者可以进一步...