Layout对于迅速的搭建界面和提高界面在不同分辨率的屏幕上的适应性具有很大的作用。这里简要介绍Android的Layout和研究一下它的实现。
Android有Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout。
放入Layout中进行排布的View的XML属性:
1.几种Layout中Item
所共有的XML属性
:
- (1)layout_width
- (2)layout_height
注: (1)和(2)用来确定放入Layout中的View的宽度和高度:它们的可能取值为fill_parent,wrap_content或者固定的像素值。
- (3)layout_marginLeft --->paddingLeft
- (4)layout_marginTop --->paddingTop
- (5)layout_marginRight --->paddingRight
- (6)layout_marginBottom --->paddingBottom
- (补)layout_margin --->padding
注:(3)(4)(5)(6)是放入Layout中的View期望它能够和Layout的边界或者其他View之间能够相距一段距离。
注:(7)用来确定View在Layout中的停靠位置。
FrameLayout
是最简单的Layout,就只具有这些属性。
LinearLayout
还会有:
注:
(8)用于在LinearLayout中把所有子View排布之后的剩余空间
按照它们的layout_weight分配
给各个拥有这个属性的View。
TableLayout
的行TableRow是一个横向的(horizontal)的LinearLayout
RelativeLayout
有16个align相关的XML属性:
- (9 )layout_alignParentBottom 当前控件低端与父控件的低端对齐(重合)
- (10)layout_alignParentLeft 当前控件左端与父控件的左端对齐(重合)
- (11)layout_alignParentRight 当前控件右端与父控件的右端对齐(重合)
- (12)layout_alignParentTop 当前控件上端与父控件的上端对齐(重合)
- (13)layout_centerHorizontal 当前控件位于父控件的横向中间
位置(水平方向上的中间)
- (14)layout_centerInParent 当前控件位于父控件的纵横向中间
位置(垂直方向上的中间)
- (15)layout_centerVertical 当前控件位于父控件的纵向中间
位置(平面上的正中间)
- (16)layout_above 使当前控件位于给出id控件的上方
- (17)layout_below 使当前控件位于给出id控件的下方
- (18)layout_toLeftOf 使当前控件位于给出id控件的左侧
- (19)layout_toRightOf 使当前控件位于给出id控件的右侧
- (20)layout_alignBottom 使当前控件与给出id控件的底部部重合(注意可用和给出id控件来对齐)
- (21)layout_alignLeft 使当前控件与给出id控件的左边重合
- (22)layout_alignRight 使当前控件与给出id控件的右边重合
- (23)layout_alignTop 使当前控件与给出id控件的顶部重合
- (24)layout_alignBaseline 使当前控件的BaseLine与给出id控件t的BaseLine重合,这个主要用于Label或者其他包含文本的widgets。
注:(9)到(24)用来确定RelativeLayout中的View相对
于Layout或者Layout中的其他View的位置
。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
根据Android的文档,Android会对Layou和View嵌套组成的这棵树进行2次遍历,一次是measure调用,用来确定
Layout或者View的大小;一次是layout调用,用来确定Layout或者view的位置。当然后来我自己的山寨实现把这2次调用合并到了一
起。那就是Layout在排布之前都对自己进行measure一次,然后对View递归调用Layout方法。这样子的大小肯定是确定了的。然后用确定了
的大小来使用gravity或者align属性来定位,使用margin来调整位置。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
补充:
1.android:paddingLeft与android:layout_marginLeft的区别:
padding margin都是边距的含义,关键问题得明白是什么相对什么的边距.
padding是控件的内容相对控件的边缘的边距.
layout_margin是控件边缘相对父空间的边距.
2.android gravity和layout_gravity区别
android:gravity 属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.该属性就干了这个.
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左靠右等位置就可以通过该属性设置.
这样就解释了,有什么我们弄个最外布局,然后里面包了几个布局,如果要使这几个布局都靠底,就可以在最外布局的属性里设置androi:gravity="botton" 因为gravity是对里面的内容起作用.
分享到:
相关推荐
本文将深入探讨Android布局XML属性,以及它们如何影响界面设计和屏幕适配。 首先,Android提供了五种主要的布局类型: 1. **FrameLayout**:是最基础的布局,允许一个视图占据整个屏幕,通常用于显示单个元素。 2....
这篇文章将深入探讨几种常见的Android Layout XML属性,帮助开发者更好地理解和使用它们。 首先,我们来看一些通用的布局属性: 1. `layout_width` 和 `layout_height`:这两个属性决定了布局内视图(View)的宽度...
Android XML 布局属性可以分为三类:第一类是属性值为 true 或 false 的布局属性,第二类是属性值必须为 id 的引用名的布局属性,第三类是属性值为具体的像素值的布局属性。 第一类:属性值为 true 或 false 的...
### Android中XML属性与解析深度解析 #### 一、引言 在Android开发中,XML文件扮演着至关重要的角色,特别是在界面布局设计方面。通过理解并掌握XML的基本属性及其解析方法,开发者能够更加高效地创建出美观且功能...
### Android Layout样式布局详解 #### 一、概述 在Android应用开发中,界面设计是非常重要的一环,而界面设计的核心就是布局(Layout)。布局决定了应用界面的结构与外观,是用户体验好坏的重要因素之一。本文将...
通过XML,开发者可以声明各种UI组件,如按钮、文本视图、图像视图等,并设置它们的属性,如大小、位置、颜色等。XML布局文件可以做到响应式设计,适应不同屏幕尺寸,通过、、等布局管理器来组织组件,实现灵活的界面...
### 关于Android的XML属性详细说明 #### 概述 在Android开发中,XML文件用于定义用户界面的布局和外观。这些文件包含了丰富的属性,允许开发者定制化UI元素的各个方面。本文将详细介绍部分核心XML属性的功能及其...
此外,利用工具如Android Studio的Layout Inspector可以直观地查看运行时布局的层级结构和属性,这对调试和优化自定义组件非常有帮助。同时,使用Android Profiler可以分析自定义组件的性能,确保在实现复杂效果的...
在Android开发中,布局(Layout)是构建用户界面的基础元素,它定义了屏幕上各个组件的排列方式和相互关系。本文将深入探讨Android的五种主要布局:LinearLayout、RelativeLayout、FrameLayout、GridLayout以及...
每个视图(View)或视图组(ViewGroup)在XML中都有一个ID属性,如`android:id="@+id/my_view"`,这里的`my_view`就是布局ID。这个ID用于在代码中引用和操作对应的UI元素。 2. **资源ID的工作原理** Android系统将...
本文将详细介绍与Android布局相关的XML属性及其用法。 ### 常见的Android Layout类型 1. **LinearLayout**:线性布局是最基本的布局之一,它可以按照水平或垂直方向来排列子视图。 2. **RelativeLayout**:相对...
Android Layout设计软件是为了帮助开发者更高效、直观地创建和编辑XML布局文件,提升UI设计的效率和质量。"android layout 设计软件"很可能是一款专为Android开发人员设计的图形化工具,它允许用户通过拖放的方式...
在Android开发中,XML是一种非常重要的工具,尤其在创建用户界面和定义图形元素时。本教程将深入探讨如何使用XML来实现一些常见的背景图,包括按钮样式和文本编辑框布局。我们将主要关注四个核心概念:Shape、...
Android.R.styleable 类包含 XML 属性 Android.R.styleable 类是一个非常重要的类,它包含了所有组件相关的 XML 属性。在 Android 布局文件中,我们经常使用这些属性来设置控件的样式和行为。下面我们将详细介绍...
- `layout`属性:这是必填项,用于指定要包含的布局资源文件的ID,通常以`@layout/`开头,后面跟着布局文件的名称,例如`@layout/my_common_button`。 - `android:id`:可选,为包含的布局设置一个ID,以便在代码中...
在Android布局设计中,`android:layout_margin`属性用于设置View与周围元素的边距,包括`android:layout_marginTop`、`android:layout_marginBottom`、`android:layout_marginLeft`和`android:layout_marginRight`。...
文档“Android_XML属性大全.doc”可能包含了所有常用的XML属性,包括但不限于: - 视图属性:如android:layout_gravity(元素的对齐方式)、android:background(背景图片或颜色)等。 - 文本属性:如android:...
工具会识别这些标签,并记录其属性,特别是`android:id`属性,它是组件ID的关键。 3. **ID收集**:在解析过程中,工具会收集所有组件的ID,并存储为列表。ID通常是Android资源引用(例如`@+id/my_button`),这些...