layout(布局)定义了用户界面的可视化结构(visual structure),如Activity的UI,应用窗口的UI。

有两种方式声明layout:

1.在xml文件中声明UI组件

2.在运行时,实例化布局元素。我们可以以编码的方式创建View或ViewGroup对象,操纵它们的属性。

下面用一个小例子来学习怎样以编码的方式添加layout:

 1 import android.app.Activity;
 2 import android.graphics.Color;
 3 import android.os.Bundle;
 4 import android.view.ViewGroup;
 5 import android.widget.Button;
 6 import android.widget.LinearLayout;
 7 import android.widget.TextView;
 8
 9 public class MainActivity extends Activity {
10
11     private LinearLayout linearLayout;
12     private TextView textView;
13     private Button button;
14     public static final int VERTICAL = 1;
15     public static final int MATCH_PARENT = -1;
16     public static final int WRAP_CONTENT = -2;
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20
21         //以编码的方式添加layout
22
23         linearLayout = new LinearLayout(this);
24         linearLayout.setOrientation(VERTICAL);  //设置LinearLayout方向,0是水平,1是垂直。默认是水平。
25         //设置布局参数,-1是MATCH_PARENT,-2是WRAP_CONTENT
26         //ViewGroup.LayoutParams(int width, int height)
27         linearLayout.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT,MATCH_PARENT));
28
29         textView = new TextView(this);
30         textView.setText("ThisIsATextView");
31         textView.setBackgroundColor(Color.RED);
32         textView.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT,WRAP_CONTENT));
33
34         button = new Button(this);
35         button.setText("ThisIsAButton");
36         button.setBackgroundColor(Color.GREEN);
37         button.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT,WRAP_CONTENT));
38
39         linearLayout.addView(button);
40         linearLayout.addView(textView);
41         //布局写好后,不要忘记添加到Activity中
42         setContentView(linearLayout);
43
44
45     }
46 }

运行效果图:

每个layout文件必须包含一个确定的根元素,这个根元素它必须是View或ViewGroup的对象。

那View类和ViewGroup类的作用是什么呢?

View:

为用户界面组件提供基本的搭建区域 。View类是widgets的父类,widgets通常用来创建交互UI组件

如button,TextView等等。View类同时也是ViewGroup类的父类。

ViewGroup:

是layout类的父类,而layout类是保存其他View或ViewGroup的可视化容器(invisible containers),并且能定义它们的布局属性。

通过添加额外的布局对象(layout object)或窗口(widgets)作为子元素来逐渐完善视图层。

下面通过一个layout文件来具体学习以下:

 1 <!-- 确定的根元素 LinearLayout是ViewGroup的子类layout的对象 -->
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="wrap_content"
 6     android:orientation="vertical" >
 7     <!-- 添加子组件来丰富视图层 -->
 8     <Button
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:background="#f00"
12         android:layout_weight="1"
13         android:text="ThisIsAButton" />
14     <TextView
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:background="#0f0"
18         android:text="ThisIsATextView"
19         />
20 </LinearLayout>

我们在xml文件中声明好界面的布局方式以后,将xml文件保存在res/layout/ 下即可。

希望这篇文章对大家的学习有所帮助,如果你喜欢,请推荐一下,谢谢~

如果转载,请在文章开头处注明本博客地址:http:www.cnblogs.com/JohnTsai

欢迎讨论交流,邮箱:JohnTsai.Work@gmail.com :)

Android 布局学习之——Layout(布局)详解一相关推荐

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

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

  2. 如何修改eclipse 中Android的预览layout布局背景颜色

    如何修改eclipse 中Android的预览layout布局背景颜色 最近在学习有关于主题和style方面的东西,不知道自己搞了什么东西,layout文件在预览的时候背景颜色总是黑色的,但是运行出来 ...

  3. 《Android 网络开发与应用实战详解》——2.3节Android系统架构

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.3节Android系统架构,作者 王东华,更多章节内容可以访问云栖社区"异步社区"公 ...

  4. Android vector标签 PathData 画图超详解

    此文章来源于https://www.cnblogs.com/yuhanghzsd/p/5466846.html点击打开链接 Android vector标签 PathData 画图超详解 SVG是一种 ...

  5. android 多闹钟实现代码,Android编程实现闹钟的方法详解

    Android编程实现闹钟的方法详解 发布时间:2020-09-30 10:18:02 来源:脚本之家 阅读:75 作者:Jacob-wj 本文实例讲述了Android编程实现闹钟的方法.分享给大家供 ...

  6. android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...

    一.简单实例: EditText输入的文字样式部分的属性,基本都是和TextView中的属性一样. 除此之外,EditText还有自己独有的属性. 二.基本属性: hint 输入框显示的提示文本 te ...

  7. Android Binder框架实现之Parcel详解之基本数据的读写

       Android Binder框架实现之Parcel详解之基本数据的读写 Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android ...

  8. android标尺自定义view,android尺子的自定义view——RulerView详解

    项目中用到自定义尺子的样式: 原效果为 因为跟自己要使用的view稍有不同 所以做了一些修改,修改的注释都放在代码中了,特此记录一下. 首先是一个自定义View: public class RuleV ...

  9. 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解 本篇文章小编为大家介绍,Android onTouchEvent 与 onInterceptTo ...

最新文章

  1. 学生电脑哪个牌子好_泡脚足浴盆哪个牌子好?家用足浴盆哪个品牌好?足浴盆哪个牌子最安全?...
  2. Position(Static, Absolute, Relative, Fixed)
  3. 为何程序员上班时间总戴个耳机,看完恍然大悟...
  4. apache hadoop_使用Apache Hadoop计算PageRanks
  5. Perl迎来25岁生日
  6. caffe+opencv3.3.1
  7. collector_使用Data Collector进行SQL Server性能监视–第3部分–阅读报告
  8. invocation, 作者 Medwyn Goodall,女巫医 [搜索 invocation Medwyn Goodall]
  9. Qt 动图 播放png阵列 避免使用gif导致失真
  10. xshell xftp免费版下载
  11. java班级管理系统代码_基于jsp的班级管理系统-JavaEE实现班级管理系统 - java项目源码...
  12. Android mc怎么和win10联机,我的世界手机版与win10版联机可完美互通
  13. Scrapy 爬取电影网站开发微信公众号
  14. (20200226已解决)PyCharm里的黄色波浪线
  15. 代写品牌故事四步写作方法
  16. c-free语言编程软件,c-free软件下载_c-free官方下载_3DM软件
  17. 万全r680g7配置raid_联想万全r680g7服务器系统用户手册v1.2
  18. java ocr 表格票据识别_OCR表格票据识别技术。
  19. 如何导入和导出Maven项目(分享给别人源码)
  20. 【C语言】sizeof操作符详解

热门文章

  1. Faste R-CNN的安装及测试
  2. python学习总结----时间模块 and 虚拟环境(了解)
  3. css纯字母或者字母换行显示
  4. ajaxReturn 之前dump调试,导致$.ajax不能正常运行
  5. Testin云測与ARM 战略合作:推动全球移动应用加速进入中国市场
  6. [转]基于Starling移动项目开发准备工作
  7. [转]Android开发,实现可多选的图片ListView,便于批量操作
  8. java调用、执行groovy代码
  9. Shiro 登录、退出、校验是否登录涉及到的Session和Cookie
  10. 编写一个简单的spring MVC程序