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是对里面的内容起作用.
分享到:
相关推荐
Androidlayoutxml属性[文].pdf
Android Layout XML属性
本文主要介绍Android Layout XML 一些属性,在Android开发过程中布局文件大家肯定都会用到,在这里对Layout XML 进行详解,希望能对大家有所帮助
Android布局文件layout.xml的一些属性值 android开发必看文档
Android包下面android.R.styleable类包含下面所有组件相关的XML属性。如:publicstaticfinalint[]LinearLayout_Layouthttp://www.blogjava.net/zhip/archive/2011/01/25/343511.html Android包下面android.R....
导语:PreferenceActivity是一个方便设置管理的界面,但是对于界面显示来说比较...使用Preference的android:@layout属性 1)xml文件中preference的添加 代码如下: <Preference android:layout=”@layout/youmi_ad”
各种Layout用到的一些重要的属性,分为三类进行阐述。
xamarin-android-schema-generator是一个Android layout.xml模式生成器。 警告:Android布局xml不太适合XML模式限制。 XML Schema的扩展性不足以接受非标准组件或非标准属性(由于元素/属性通配符的限制),这些非...
因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性 <TextView android:id=@+id/text_main android:layout_width=match_parent android:layout_height=wrap_content android:...
4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 android:id="@+id/lla" 7 android:gravity="right" 8 > <!-- 声明一个 LinearLayout 布局,并设置其属性 --> 9 10 android:text="@...
2 3 3 android:layout gravity属性和android:gravity属性 2 4 高级布局技术 第3章 组件 3 1 组件的属性 3 2 文本组件 3 3 按钮组件 3 4 图像组件 3 5 进度组件 3 6 列表组件 3 7 容器组件 3 8 自定义组件 3 9 四大...
layout_centerInParent - 将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有 :layout_centerHorizontal, layout_alignParentLeft 等) layout_marginLeft - 设置当前元素相对于其容器的左侧...
Android布局文件的属性值解析说明: 1 android:id [为控件指定相应的ID] 2 android:text [指定控件当中显示的文字 需要注意的是 这里尽量使用strings xml文件当中的字符串] 3 android:gravity [指定View组件的对齐...
DroidDraw 是一个基于Java Swing的Android界面设计器,我们可以通过它来生成复杂的Android Layout XML文件! 使用这个我有2点说明: 1.可以利用该工具进行Android 配置文件 XML 属性学习。 2.运行这个工具你必须安装...
查了下资料,说是要设置layout_weight属性 资料说得不是很清楚,也没仔细看,就去弄,结果越弄越混乱。 于是静下心来,自己写xml测试,发现如下。 如果LinearLayout是最外面的一层,它是不会弹出layout_weight属性的...
基本就是结合layout中ScrollView视图和AndroidManifest.xml中activity中的android:windowSoftInputMode属性配置实现; 2.要了解android:windowSoftInputMode相应的可以配置项: activity主窗口与软键盘的交互模式,...
Xamarin 绑定引擎这是一个小的概念证明,展示了如何为 Xamarin.Android 应用程序实现基于 XML 属性的绑定引擎。 您可以在我的博客上找到更多详细信息( )但这里有一些可以实现的小例子: 简单的单向绑定: , Target...
android开发中,我们经常使用xml来编写布局文件,这种实现方式不仅简单,而且表达能力更强。但是Google提供的布局属性有限,某些功能的实现我们必须使用代码,或者自定义控件的方式例如我们经常使用背景来表示和设置...