Android核心技术与实例详解—Android布局管理器

合集下载

Android组件---四大布局的属性详解

Android组件---四大布局的属性详解

Android组件---四⼤布局的属性详解【声明】欢迎转载,但请保留⽂章原始出处→_→Android常见布局有下⾯⼏种:LinearLayout:线性布局。

所有的控件都是串在⼀条线上的。

RelativeLayout:相对布局。

所有的控件的位置,都是相对于⽗控件的。

FrameLayout:帧布局。

FrameLayout布局中的控件都是⼀层⼀层的。

帧布局每次添加的控件都显⽰在最上⾯,最后显⽰在界⾯上的是最后添加的⼀个控件。

TableLayout:表格布局。

表格布局可以实现的.⼀般可以使⽤线性布局实现。

AbsoluteLayout:绝对布局。

已经是废弃的状态,很少⽤了。

orientation:属性是指定线性布局的排列⽅向。

horizontal ⽔平。

线性布局默认的朝向是⽔平的。

vertical 垂直例如:android:orientation="vertical"gravity:指定当前控件⾥⾯的内容容显⽰位置。

(四⼤layout中均可使⽤)left 左边right 右边top 上边bottom 底边例如:android:gravity="center"gravity中的属性可以组合使⽤。

例如:android:gravity="bottom|right"layout_gravity:指定当前控件在⽗元素的位置。

(只在 LinearLayout 和 FrameLayout 中有效)left 左边right 右边top 上边bottom 底边centercenter_horizontalcenter_vertical例如:android:layout_gravity="center"另外,需要提⽰的是,对于 LinearLayout :当 android:orientation="vertical" 时,只有⽔平⽅向的设置才起作⽤,垂直⽅向的设置不起作⽤。

[精品]02Layout布局管理器

[精品]02Layout布局管理器
setContentView(yout.<资源文件名>);
通过如下方法访问指定的UI组件:
findViewById(R.id.<组件id>);
使用XML布局文件定义视图
Xml布局文件是android系统中定义的视图常用方法,所有的布 局文件必须包含在res/layout目录中。定义XML布局的命名和定 义注意事项如下: xml布局文件必须是以xml文件名结束,命名必须是符合java的 规范 每一个xml布局文件的根节点可以是任意的控件标签 xml布局文件的根节点必须是包含android的命名空间,命名空 间必须是 xmlns:android=/apk/res/android 为xml文件布局中的控件指定的id需要使用这样的格式: android:id=“@+id/控件名称“该标记会保存在R文件中,即生 成 android:id="@id/控件名称"表示该控件的id名称已经在R文件生 成了,可以引用了 每一个视图的id都会在R类中生成与之对应的变量,因此视图ID 的值必须是符合java规范的
为了适应各种界面风格,Android提供了6种布局,这6种布局分别是: FrameLayout(帧布局)、LinearLayout(线性布局)、RelativeLayout(相 对布局)、TableLayout(表格布局)、GridLayout(网格布局)、 AbsoluteLayout(绝对布局)(已过时,故此不讲)等。 利用以上6种布局我们可以再手机屏幕上随心所欲的摆放各种控件。 布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以 适配不同手机屏幕的分辨率,尺寸大小;
若有可能,横向拉伸以填满容器
学云 |”分隔即可 为您提供高品质课件、学习督导服务、即时答疑、知识交易平台 当需要设置多个值时,用“

Android-UI布局管理相关知识

Android-UI布局管理相关知识

• • • • • • • • •
其对应strings.xml内容如下: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, UIActivity!</string> <string name="app_name">用户界面</string> <string name="name_text">请输入用户名</string> <string name="ok_button">确定</string> <string name="cancle_button">取消</string> </resources>
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="0,1,2,3" > <TableRow> <TextView android:text="@string/name" android:gravity="center" android:padding="3dip" /> <TextView android:text="@string/gender" android:gravity="center" android:padding="3dip" /> <TextView android:text="@string/age" android:gravity="center" android:padding="3dip" /> <TextView android:text="@string/phonenum" android:gravity="center" android:padding="3dip" /> </TableRow> <TableRow>

安卓之布局总结

安卓之布局总结

安卓之布局总结Adroid布局有⼈形象地⽐喻,Android开发中的布局就相当于⼀栋建筑的外观架构。

布局⽤得好,这栋建筑的外观才美观⾼⼤上。

Android布局管理器Android布局管理器本⾝是⼀个界⾯控件,所有的布局管理器都是ViewGroup类的⼦类,都是可以当做容器类来使⽤的。

因此⼀个布局管理器中可以嵌套其他的布局管理器。

这是⾕歌上找的⼀张布局管理器层级图每⼀个ViewGroup都可以嵌套其他的ViewGroup和View(视图)。

⼀个ViewGroup的⼤⼩是相对的,它即可以是其他ViewGroup的⽗容器,也可以是其他ViewGroup的⼦容器。

在Android中,ViewGroup指代的是布局管理器,也就是下⾯要讲的布局样式,View指代的是布局管理器中的⼀个个控件。

在Android中,控件可以在XML⽂件中定义,也可以程序员根据⾃⼰的需要去定义⼀个类。

本⽂重点先不讨论视图中的控件,还是回归到布局。

Android六⼤基本布局管理器分别是:线性布局(LinearLayout)、表格布局(TableLayout)、⽹格布局(GridLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)、层布局(FrameLayout)其中,表格布局是线性布局的⼦类。

⽹格布局是android 4.0后新增的布局。

(1)线性布局线性布局会将容器内的所有控件⼀个挨着⼀个地排列。

属性:1. 排列⽅向android:orienation = “ horizontal/vertical”⽔平排列和垂直排列,Android中默认为垂直排列vertical注意:默认情况下⽔平和垂直⽅向的排列只占⼀⾏,如果⽤android:layout_width来设定控件的宽度,如果控件宽度太⼤,超出屏幕的显⽰范围,屏幕是不会显⽰超出的范围的。

2. 对齐⽅式⽤于控制元素(例如⽂字)在该控件⾥的显⽰位置。

Android移动应用开发实用第4章 Android布局管理器

Android移动应用开发实用第4章 Android布局管理器

4.4.2 AbsoluteLayout实例
下面用一个例子来展示绝对布局的实现方法,实现结果如 图4-4所示。
图4-4
4.4.2 AbsoluteLayout实例
图4-4所示界面设计的基本思想主要分为以下几步:
如果使用AbosoluteLayout布局需根据所需屏幕样式计算 各个控件的横纵坐标,上例中的TextView没有为layout_x 和layout_y指定具体值,那么这两个属性值默认都为0即绝 对坐标(0, 0),使TextView控件显示在屏幕的最左上角。
4.1.1 LinearLayout介绍
线性布局是最常用的布局方式。线性布局在XML布局文件 中使用<LinearLayout>标签进行配置。
线性布局可分为水平线性布局和垂直线性布局。通过 android:orintation属性设置线性布局的方向,该属性的 可取值是horizontal和vertical,默认值是horizontal。
整个TableLayout第一部分包含3个TableRow,每个 TableRow中包括2个TextView。整个TableLayout第二部 分包含2个TableRow,每个TableRow中包括2个TextView 。整个TableLayout第三部分包含1个TableRow。
实例中<TextView>控件中的padding属性值为容器内内容 与容器的边距,这里使用的单位是dip。在android中使用 的单位主要包括dip、dp、px和sp。dip的含义与dp相同, 代表设备独立像素,不依赖像素不同设备有不同的显示效 果,一般当为了支持WVGA、HVGA和QVGA时推荐使用这 两种单位。px即pixels(像素),属于绝对像素,在不同的 设备上显示效果是相同的。sp为scaled pixels(放大像素 ),主要用于字体显示。

5Android布局管理器(1)共17页文档

5Android布局管理器(1)共17页文档

本节目标
控件类概述
• “人靠衣装,佛靠金装” • View类 • ViewGroup类
View类简介

可视化控件的基类
View类常用属性及方法
属性名称 android:background android:clickable
android:visibility android:focusable
谢 谢!
谢谢
11、越是没有本领的就越加自命不凡。——邓拓 12、越是无能的人,越喜欢挑剔别人的错儿。——爱尔兰 13、知人者智,自知者明。胜人者有力,自胜者强。——老子 14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。——歌德 15、最具挑战性的挑战莫过于提升自我。——迈克尔·F·斯特利
描述
设置指定列号的列为 是否隐藏
设置指定的列号列为 宽度是否可进行收缩
设置指定列号的列为 宽度是否可进行拉伸
表格布局实例
TextView
TextView被拉伸
TextView
TextView 被收缩
TextView
表格一 表格二
表格三
小结
• 介绍了View类以及子类ViewGroup
• 通过实例介绍了线性布局以及表格布局的 用法
– 继承自LinearLayout类
• 发行和列的开形式管理控件
– 第行为一个TableRow对 – 也可做为View对象
表格布局
常用属性及对应方法说明
属性名称 android:colapseColumns android:shrinkColumns android:stretchColumns
对应方法 setColumnCollapsed(int,bolean) setShrinkAllColumns(boolean) setStretchAllColumns(boolean)

Android布局及布局属性

Android布局及布局属性

Android布局及布局属性1、帧布局FrameLayout:是最简单的一个布局对象。

在他里面的的所有显示对象爱你过都将固定在屏幕的左上角,不能指定位置,但允许有多个显示对象,只是后一个会直接覆盖在前一个之上显示,会把前面的组件部分或全部挡住。

下图的例子里,FrameLayout中放了3个ImageView组件,第一个是蓝色的,第二个是绿色的,第三个是树状图(透明的png格式)。

ImageView就相当于Html中的img标签,接下来会讲到这个组件。

下面看一个FrameLayout的例子:<?xml version="1.0" encoding="utf-8"?><FrameLayout android:id="@+id/FrameLayout01"android:layout_width="fill_parent" android:layout_height="fill_parent"xmlns:android="/apk/res/android"><ImageView android:id="@+id/ImageView01" android:src="@drawable/p1"android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView><ImageView android:id="@+id/ImageView02" android:src="@drawable/p2"android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView><ImageView android:id="@+id/ImageView03" android:src="@drawable/p3"android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView></FrameLayout>2、线性布局LinearLayout:线性布局是所有布局中最常用的类之一,也是RadioGroup, TabWidget, TableLayout, TableRow, ZoomControls类的父类。

Android应用程序中的布局设计

Android应用程序中的布局设计

Android应用程序中的布局设计Android应用中的布局设计是开发中最重要并且最需要注意的事情之一。

一个良好的布局设计可以使应用程序更加直观和易用,而一个糟糕的布局则会让用户感到不舒服并降低程序的易用性,因此在进行Android应用程序开发之前,设计者应该认真思考和规划布局设计。

Android的布局设计可分为两大类:线性布局和相对布局,每种布局都有其独有的优点和缺点。

同时,需要考虑用户界面设计的规范性和一致性。

线性布局线性布局是一种简单而灵活的设计方式,其根据水平或垂直方向进行布局。

线性布局很容易控制,使开发者可以更加容易地管理和维护布局。

优点线性布局简单易用,可以轻松地控制元素的位置和大小,因此对于初学者来说是一种非常有利的布局方式。

其还可以按比例控制元素,从而适应多种不同大小的设备。

其次,线性布局可以让开发者快速地检查视图的位置和大小,从而进一步简化布局调整的难度。

缺点线性布局也有些缺陷。

当布局变得非常复杂时,线性布局会变得非常繁琐。

此外,当元素数量增加后,屏幕空间开始变得紧张,这会使得描述布局的XML变得明显更长。

同时,由于所有元素都需要进行细微的控制,因此更加可能会出现错误。

相对布局相对布局是一种更加灵活的布局方式,可以根据元素之间的相对位置来确定布局。

此方式较线性布局更加复杂,但是其在一些情况下可以提供更好的灵活性。

优点相对布局可以根据需要动态地调整布局,使得其能够适应多种不同的设备。

同时,相对布局可支持同时存在多个元素,并且可以在这些元素之间形成各种关系。

这些关系可以是垂直或水平的,甚至可以是根据其他元素的位置而定的。

缺点相对布局也有一定的缺点。

由于关系比较复杂,因此需要更加仔细地进行布局控制,否则就会导致元素相互干扰和布局错误的问题。

此外,相对布局的调整也比较困难,因为调整一个元素的位置通常会影响整个布局,因此一定要更加谨慎地操作。

用户界面设计的规范性和一致性良好的用户界面设计应该具有一定的规范性和一致性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实战Android编程——手把手教你做出商用软件34第3章Android布局管理器本章要介绍的内容为Android平台下的布局管理器。

Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。

下面将分别对每个布局管理器进行详细的介绍。

3.1 控件类概述3.1.1 View类简介在介绍Android的布局管理器之前,有必要让读者了解Android平台下的控件类。

首先要了解的是View类,该类为所有可视化控件的基类,主要提供了控件绘制和事件处理的方法。

创建用户界面所使用的控件都继承自View,如TextView、Button、CheckBox等。

关于View及其子类的相关属性,既可以在布局XML文件中进行设置,也可以通过成员方法在代码中动态设置。

View类常用的属性及其对应方法如表3-1所示。

表3-1 View类常用属性及对应方法说明属性名称对应方法描述android:background setBackgroundResource(int) 设置背景android:clickable setClickable(boolean) 设置View是否响应点击事件android:visibility setVisibility(int) 控制View的可见性android:focusable setFocusable(boolean) 控制View是否可以获取焦点android:id setId(int) 为View设置标识符,可通过findViewById方法获取android:longClickable setLongClickable(boolean) 设置View是否响应长点击事件android:soundEffectsEnabled setSoundEffectsEnabled(boolean) 设置当View触发点击等事件时是否播放音效android:saveEnabled setSaveEnabled(boolean) 如果未作设置,当View被冻结时将不会保存其状态android:nextFocusDown setNextFocusDownId(int)定义当向下搜索时应该获取焦点的View,如果该View 不存在或不可见,则会抛出RuntimeException异常android:nextFocusLeft setNextFocusLeftId(int) 定义当向左搜索时应该获取焦点的Viewandroid:nextFocusRight setNextFocusRightId(int) 定义当向右搜索时应该获取焦点的View续表属性名称对应方法描述android:nextFocusUp setNextFocusUpId(int) 定义当向上搜索时应该获取焦点的View,如果该View第3章 Android 布局管理器35不存在或不可见,则会抛出RuntimeException 异常说明:任何继承自View 的子类都将拥有View 类的以上属性及对应方法。

3.1.2 ViewGroup 类简介另外一个需要了解的是ViewGroup 类,它也是View 类的子类,但是可以充当其他控件的容器。

ViewGroup 的子控件既可以是普通的View ,也可以是ViewGroup ,实际上,这是使用了Composite 的设计模式。

Android 中的一些高级控件如Galley 、GridView 等都继承自ViewGroup 。

与Java SE 不同,Android 中并没有设计布局管理器,而是为每种不同的布局提供了一个ViewGroup 的子类,常用的布局及其类结构如图3-1所示。

3.2 线性布局 本节将会对线性布局进行简单的介绍。

首先向读者介绍LinearLayout 类的相关知识,然后通过一个实例说明LinearLayout 的用法。

3.2.1 LinearLayout 类简介线性布局是最简单的布局之一,它提供了控件水平或者垂直排列的模型。

同时,使用此布局时可以通过设置控件的weight 参数控制各个控件在容器中的相对大小。

LinearLayout 布局的属性既可以在布局文件(XML )中设置,也可以通过成员方法进行设置。

表3-2给出了LinearLayout 常用的属性及这些属性的对应设置方法。

表3-2 LinearLayout 常用属性及对应方法 属性名称 对应方法 描 述android:orientation setOrientation(int) 设置线性布局的朝向,可取horizontal 和vertical 两种排列方式android:gravity setGravity(int) 设置线性布局的内部元素的布局方式在线性布局中可使用gravity 属性来设置控件的对齐方式,gravity 可取的值及说明如表3-3所示。

提示:当需要为gravity 设置多个值时,用“|”分隔即可。

表3-3 gravity 可取的属性及说明属 性 值说 明top 不改变控件大小,对齐到容器顶部 续表属 性 值说 明bottom 不改变控件大小,对齐到容器底部 图3-1 布局管理器的类结构实战Android 编程——手把手教你做出商用软件36 left不改变控件大小,对齐到容器左侧right不改变控件大小,对齐到容器右侧 center_vertical不改变控件大小,对齐到容器纵向中央位置 center-horizontal不改变控件大小,对齐到容器横向中央位置 center不改变控件大小,对齐到容器中央位置 fill_vertical若有可能,纵向拉伸以填满容器 fill_horizontal若有可能,横向拉伸以填满容器 fill 若有可能,纵向横向同时拉伸以填满容器3.2.2 线性布局案例在前面的章节中介绍了LinearLayout 类的相关知识,本节将通过一个案例来说明LinearLayout 的用法。

本案例的开发步骤如下。

在Eclipse 中新建一个项目Sample_3_1,首先打开项目文件夹下res/values 目录下的strings.xml ,在其中输入如下代码。

1 <?xml version="1.0" encoding="utf-8"?>2 <resources>3 <string name="app_name">LinearExample</string>4 <string name="button">按钮</string>5 <string name="add">添加</string>6 </resources> 代码位置:见随书光盘中源代码/第3章/Sample_3_1/res/values 目录下的strings.xml 。

说明:在strings.xml 中主要声明了程序中要用到的字符串资源,这样将所有字符串资源统一管理有助于提高程序的可读性及可维护性。

打开项目文件夹下的res/layout 目录下的main.xml ,将其中已有的代码替换为如下代码。

1 <?xml version="1.0" encoding="utf-8"?>2 <LinearLayout xmlns:android="/apk/res/android"3 android:orientation="vertical"4 android:layout_width="fill_parent"5 android:layout_height="fill_parent"6 android:id="@+id/lla"7 android:gravity="right"8 > <!-- 声明一个LinearLayout 布局,并设置其属性 -->9 <Button10 android:text="@string/add"11 android:id="@+id/Button01"12 android:layout_width="wrap_content"13 android:layout_height="wrap_content">14 </Button> <!-- 声明一个Button 布局,并设置其id 为Button01 --> 15 </LinearLayout>代码位置:见随书光盘中源代码/第3章/Sample_3_1/res/layout 目录下的main.xml 。

¾ 第2~8行声明了一个线性布局,第3行设置线性布局的朝向为垂直排列。

¾ 第4~5行设置该线性布局在其所属的父容器中的布局方式为横向和纵向填充父容器。

¾ 第6行为该线性布局声明了ID 。

第7行设置该线性布局内部元素的布置方式为向右对齐。

第3章 Android 布局管理器37¾ 第9~14行声明了一个Button 控件,其ID 为Button01,第10行设置Button 控件显示的文本内容为资源文件strings.xml 中的属性值。

¾ 第12~13行设置Button 控件在父容器中的布局方式为只占据自身大小的空间。

打开项目的Activity 文件LinearActivity.java ,将其中已有的代码替换为如下的代码。

1 package wyf.jc; //声明包语句2 import android.app.Activity; //引入相关类3 import android.os.Bundle; //引入相关类4 import android.view.View; //引入相关类5 import android.widget.Button; //引入相关类6 import android.widget.LinearLayout; //引入相关类7 public class LinearActivity extends Activity {8 int count=0; //计数器,记录按钮个数 9 @Override10 public void onCreate(Bundle savedInstanceState) { //重写onCreate 方法11 super.onCreate(savedInstanceState);12 setContentView(yout.main);13 Button button = (Button) findViewById(R.id.Button01);//获取屏幕中的按钮控件对象14 button.setOnClickListener( //为按钮添加OnClickListener 接口实现 15 new View.OnClickListener(){16 public void onClick(View v){17 LinearLayout ll=(LinearLayout)findViewById(R.id.lla); //获取线性布局对象18 String msg=LinearActivity.this.getResources().getString(R. string.button);19 Button tempbutton=new Button(LinearActivity.this); //创建一个Button 对象20 tempbutton.setText(msg+(++count)); //设置Button 控件显示的内容 21 tempbutton.setWidth(80); //设置Button 的宽度22 ll.addView(tempbutton); //向线性布局中添加View 23 }24 });25 }26 }代码位置:见随书光盘中源代码/第3章/Sample_3_1/src/wyf/jc 目录下的main.xml 。

相关文档
最新文档