Android 布局学习之——Layout(布局)详解一

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 :)

时间: 2024-10-25 17:32:15

Android 布局学习之——Layout(布局)详解一的相关文章

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

[Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.Android 布局学习之——LinearLayout的layout_weight属性   4.Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline    Layout Parameters(布局参数): 在XML文件中,我们经常看到类似与lay

Android 布局学习之——Layout(布局)具体解释二(常见布局和布局參数)

 [Android布局学习系列]   1.Android 布局学习之--Layout(布局)具体解释一   2.Android 布局学习之--Layout(布局)具体解释二(常见布局和布局參数)   3.Android 布局学习之--LinearLayout的layout_weight属性   4.Android 布局学习之--LinearLayout属性baselineAligned的作用及baseline    Layout Parameters(布局參数): 在XML文件里,我们常常看到类

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

转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)>>中,我们 了解了View树的转换过程以及如何设置View的LayoutParams的.本文继续沿着既定轨迹继续未完成的job. 主要知识点如下:                 1.MeasureSpc类说明                 2.measure过程详解(揭秘其细节);   

Android实习札记(6)---ViewPager使用详解

Android实习札记(6)---ViewPager使用详解                                    --转载请注明出处:coder-pig 札记(5)中介绍了Fragment构建简单的底部导航栏,在结尾的时候说要在下一节中,结合Viewpager 实现进入软件时的引导界面,说到ViewPager,很多朋友都用过,不过只知道粘贴复制,连一些基本的 东西都不知道,那是不行的,在本节中就先讲下ViewPager的一些基本概念吧! 1.首先ViewPager在哪个包下?

Android ViewGroup触摸屏事件派发机制详解与源码分析

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 该篇承接上一篇<Android View触摸屏事件派发机制详解与源码分析>,阅读本篇之前建议先阅读. 1 背景 还记得前一篇<Android View触摸屏事件派发机制详解与源码分析>中关于透过源码继续进阶实例验证模块中存在的点击Button却触发了LinearLayout的事

【Android UI设计】Dialog对话框详解(二)

上一篇我们介绍了Dialog的基本使用方法,[Android UI设计]Dialog对话框详解(一)今天继续介绍,废话不多说,今天主要实现ProgressDialog和透明Dialog两种效果,最后介绍一下github上的一个Dialog动画开源库,里面包含多种动画特效,效果图如下: 一.ProgressDialog基本使用 1.ProgressDialog关键代码 mProgressDialog = new ProgressDialog(MainActivity.this); // 圆形pro

Android转载二:工程目录详解

REF:http://blog.csdn.net/dianfusoft/article/details/7422540       可以看出这个工程由src,gen,Android2.3.3 jar包,assets,bin,res,AndroidManifest.xml,proguard.cfg,project.properties这几个文件(夹)组成,具体作用如下所示: 下面分层次详解几个重要的文件(夹) ● src文件夹 展开这个文件夹如下所示 可以看出,这个文件夹主要用来存放源文件 ●ge

Android开发技巧之viewstub用法详解及实现延迟加载

这一篇是接着上面的include标签的例子来讲的,地址http://blog.csdn.net/jason0539/article/details/26131831 上一篇的布局中间就用了viewstub这个控件,现在来说一下其作用和用法 " ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View " 需要注意的是,加载view之后,viewstub本身就会被新加载进来的view替换掉 上代码了,看完就理解了

JavaFX学习之道:详解JavaFX架构与框架

JavaFX 2.0平台是基于Java技术的富客户端平台.它使应用程序开发者更加容易的开发和部署跨平台的富互联网应用(RIA).JavaFX 2.0文档包含了JavaFX 2.0所提供的功能的概述. 图1描述了JavaFX 2.0平台的架构组件.后面的部分将对每一个组件进行逐一的描述.在JavaFX通用API的下面是用来运行JavaFX代码的引擎.这个引擎包括以下子组件:JavaFX高性能图形引擎(Prism);新的更小但更有效率的窗体系统(Glass);媒体引擎和Web引擎.虽然这些组件不是包