android布局单位
⑴ android的ui布局有哪些
布局(Layout)的概念是针对Activity的,Activity就是布满整 个Android设备的窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成,每个需要显示的Activity都需要在AndroidManifest.xml文件之中声明。
通常情况下,开发人员可以使用两种方式来创建UI组件,一种方式是使用XML方式来配置UI组件的相关属性,然后装载这些UI组件,这也是最常用的方式。但是有些特殊情况下,需要动态生成UI组件,则需要使用第二种方式,完全使用java代码来创建UI组件。
XML布局文件是Android系统中定义的Layout的常用方式,所有布局文件必须包含在res/layout目录中,且必须符合Java的命名 规范。当在res/layout目录下新增了布局文件之后,R.java文件会自动收录该布局资源,Java代码可通过setContentView方法 在Activity中显示该Layout。
setContentView(R.layout.<资源名称>);
在布局文件中可以指定UI组件的android:id属性,该属性的属性值代表该组件的唯一标识。通过Activity.findViewById()访问,并且findViewById()必须在setContentView加载xml文件之后使用,否则会抛出异常。
findViewById(R.id.)
Android应用的绝大部分UI组件都放在android.widget包及其子包、android.view包及其子包中,Android应用的 所有UI组件都继承了View类。View类还有一个重要的子类:ViewGroup,ViewGroup类是所有布局管理器的父类。
ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。
ViewGroup.LayoutParams提供两个XML属性设定组件的大小。
android:layout_height:指定该子组件的基本高度;
android:layout_width:指定该子组件的基本宽度。
这两个属性有三个基本值,这两个属性有三个特定的值:
fill_parent:指定组件的高度、宽度与父容器组件的一样。
match_parent:与fill_parent一样,Android2.2开始推荐使用。
warp_content:内容包裹。
ViewGroup.MarginLayoutParams用于控制子组件周围的页边距。
android:layout_marginBottom(下边距);
android:layout_marginLeft(左边距);
android:layout_marginRight(右边距):
layout_marginTop(上边距)
对于View的尺寸,android提供了三种单位供选择使用:
px:像素。
dp:dpi,表示屏幕实际的像素。
sp:与scale无关的像素,与dp类似。
尺寸单位选择的技巧:如果设置长度、高度等属性时可以使用dp或sp,但是如果设置字体,需要使用px。如果使用dp或sp,系统会根据屏幕密度的变化进行转换。
为了适应各种界面风格,Android提供了五种布局规范,利用这五种布局,基本上可以在设备上随心所欲的摆放任何UI组件,这五种布局分别是:
FrameLayout(帧布局)。
LinearLayout(线性布局)
RelativeLayout(相对布局)。
TableLayout(表格布局)。
AbsoluteLayout(绝对布局)。
线性布局(LinearLayout)
LinearLayout是最常用的布局方式,在XML文件中使用标记。它会将容器里的UI组件一个一个挨着排列起来。但是LinearLayout不会换行,当UI组件超出屏幕之后,则不会被显示出来。LinearLayout有两个重要的XML属性:androidgravity(对齐方 式);android:orientation(排列方式)。
android:orientation(排列方式),设定了LinearLayout中包含的UI组件的排列方式,有两个选项vertical(竖向)、horizontal(横向,默认值)
android:gravity(对齐方式),设定LinearLayout中包含UI组件的对齐方式,其选项很多,常用上(top)、下(bottom)、左(left)、右(right)。
⑵ Android的五大布局
1.RelativeLayout 相对布局
2. LinearLayout 线性布局
3. FrameLayout 帧布局
4.TableLayout 表格布局 (被GridView代替)
5.AbsoluteLayoutf 绝对布局(已经被谷歌废弃,几乎不会用到)
相对布局RelativeLayout允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。
特点:相对于其他空间的位置,和相对父元素的位置进行布局;
layout_centerHorizontal(相当于父节点是水平居中)
layout_centerVertical(相当于父节点是垂直居中)
layout_centerInParent(相当于父节点在正中间)
layout_above(在XX之上)
layout_below(在XX之下)
layout_toLeft(在XX的左边)
layout_toRight(在XX的右边)
layout_alignParentTop(和父节点的顶部对齐)
layout_alignParentBottom(和父节点的底部对齐)
layout_alignParentLeft(和父节点的左边对齐)
layout_alignParentRight(和父节点的右边对齐)
layout_alignTop(和XXX顶部对齐)
layout_alignBottom(和XXX底部对齐)
layout_alignLeft (和XXX左边对齐)
layout_alignRight(和XXX右边对齐)
线性布局LinearLayout是根据指定朝向orientation水平Horizontal或者垂直Vertical方向排列的布局,其最大的特点是可以给子控件按照权重weight属性分配空间.
常见案例:计算器
3. FrameLayout 帧布局
通俗的讲就是在屏幕上一层覆盖着一层的控件,在fragment中比较常用
<TextView
android:layout_width= "200px"
android:layout_height= "200px"
android:layout_gravity= "center"
android:background= "#00ff00"
android:gravity= "center" />