收藏 分享(赏)

Android五大布局Demo.doc

上传人:hwpkd79526 文档编号:8201071 上传时间:2019-06-13 格式:DOC 页数:11 大小:1.46MB
下载 相关 举报
Android五大布局Demo.doc_第1页
第1页 / 共11页
Android五大布局Demo.doc_第2页
第2页 / 共11页
Android五大布局Demo.doc_第3页
第3页 / 共11页
Android五大布局Demo.doc_第4页
第4页 / 共11页
Android五大布局Demo.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、android 五大布局Demo 截图:最初的界面包含了一个 ListView,上面有 6 个 点击 LinearLyaout 后可以看到item,点击可看到每个 item 所对应的布局。 LinearLayout 相关的布局点击 RelativeLayout 后可以看 点击 FrameLayout 后可以到 RelativeLayout 相关的布局 看到 FrameLayout 相关的布局点击 TableLayout 后可以看到 点击 Grid View 后可以看到TableLayout 相关的布局 Grid View 相关的布局点击 TabLayout 后可以看到 TabLayout 相关

2、的布局部分代码及讲解ListView 以列表的形式展示具体内容。可以用适配器来把数据映射到 ListView 上,这里我在 strings.xml 声明了一个名为 layout_array 的数组。用 android:entries=”array/layout_array”将数据映射到 ListView 上。利用适配器也可以把字符串映射在ListView 上。图片,或者基本组件也允许。通过实现 ListView 的 setOnItemClickListener 方法, 运用 switch 语句,对于不同的 item,根据其下标位置来建立对应的线程,跳转到另一个 activity。在 Linea

3、rLayout 中,按照垂直或者水平的顺序依次排列组件,每一个子组件都位于前一个元素之后。如果是垂直排列,那么将是一个 N 行单列的结构,每一行只会有一个组件,而不论这个组件的宽度为多少;如果是水平排列,那么将是一个单行 N 列的结构。但是这样排列并不会死板,仍然可以将屏幕布局为多行多列的格式,这时就需要层层嵌套。代码布局如下,采用三层嵌套,先将 ImageView 和 TextView 竖直线性布局,形成一个小组合。将两个小组合实现水平线性布局,形成一个大组合,再将两个大组合竖直线性布局,完成整体布局。父视图剩余的空间分配给设置了 layout_weight 的组件,所以将每一层嵌套的布局属

4、性 layout_weight 均设置为 1,这样,处于同一层嵌套的即拥有相同的比重,这样就可以实现让每一对 ImageView 和 Textview 占有屏幕的四等分之一。实现这样的布局,对一个小组合之中的 ImageView 与 TextView 的 layout_marginLeft 属性实现好后,可以对其他小组合进行相同的设置,使写代码更简便。下面是一个小组合的代码:在 relativelayout 中,顾名思义,就是按照各子组件相互之间的位置关系完成布局。在此布局中的子组件里与位置相关的属性将生效。对于相对布局的实现,在 xml 文件的 Graphical Layout 中可以自由拖

5、动控件以确定其位置来自动生成代码。同样可以用代码实现。在相对布局中,常用的属性:android:layout_below=”id/one”android:layout_alignParentRight=”true”android:layout_marginLeft=”10dip”android:layout_alignTop=”id/two”下面是一个控件的布局代码:实现的效果如图所示:在 FrameLayout 中,整个界面被当做一块空白备用区域,所有的组件都讲显示在屏幕的左上角,后面的组件覆盖前面的组件。后面的组件将部分或者全部讲前面的组件遮挡。 当然也可以在 frameLayout 中套

6、用其他的布局,我的想法是将包含一个居中的 textview的充满屏幕的线性布局覆盖在一个 imageview 上。代码如下。18dpimage2image3:与 image2 右对齐,上对齐,且左部空白 18dip形成的效果如第一页的效果图所示。TableLayout 顾名思义,适用于 N 行 N 列的布局格式。一个 TableLayout 由许多TableRow 组成,一个 TableRow 就代表 TableLayout 中的一行。我在每一个 tablerow 中添加了一个 ImageView 与 TextView,即两列。然后在设置每个空间相应的属性。在 TableLayout 布局中,

7、我将 android:stretchColumns 设置为 1,即所有 tablerow 的第二列为扩展列(0 代表第一列) ,意思就是让第二列扩展到所有可用空间。由于我将每个textview 的 gravity 属性设置为 right,并且我想要 textview 出现在屏幕最右边,所以讲stretchColumns 设置为 1,这样就完成了布局的实现。另外,列举一下其他重要的属性(虽然我这个程序中并没有用到)collapseColumns stretchColumns shrinkColumns 可以用”*”来表示所有列,同一列可以同时设置为 shrinkable 和 stretchabl

8、e。下面为一个 TableRow 的代码。前面实现的 linearlayout,relativelayout,framelayout,tablelayout,主要通过对不同的 xml 文件进行实现。为了简便起见,java 代码比较简单,就是运用了setContentView()方法设置当前视图。例如,实现线性布局的 java 代码为:android 五大布局,分别为 LinearLayout(线性布局) 、RelativeLayout(相对布局) 、FrameLayout(桢布局) 、TableLayout(表格布局) 、AbsoluteLayout(绝对布局) 。下面实现的 TabLayou

9、t 其实就是 TabWidget(切换卡).Tab 选项卡类似与电话本的界面,通过多个标签切换不同的内容,要实现这个效果,要运用到 TabHost,它是一个用来存放多个 Tab 标签的容器,每一个 Tab 都可以对应自己的布局,比如,电话本中的 Tab 布局就是一个线性布局要使用 TabHost,首先要通过 getTabHost 方法获取 TabHost 的对象,然后通过 addTab方法来向 TabHost 中添加 Tab,当然每个 Tab 在切换时都会产生一个事件,要捕捉这个事件,需要设置 TabActivity 的事件监听 setOnTabChangedListener。在 layout

10、 文件夹中建立 tab.xml 显示 tab 页面:然后就是实现继承了 TabActivity 的 m_TabActivity 的 java 代码,在这里我建立了 3 个activity 作为 3 个 Tab 的内容,并在 AndroidManifest.xml 中注册。同样为了简便起见,我仅仅在每个 Tab 中添加了一个 ImageView。在 GridView 中,在二维可滚动网格中呈现子项(Item)。Item 来自与之相关的 Adapter,在这里我自己定义了一个继承自 BaseAdapter 的 ImageAdapter:在这里,我声明了一个名为 mThumbIds 的数组存放所有的

11、图片。在布局文件中的描述:获取 gridview 并应用适配器。我只是呈现了 gridview 的视图,并没有实现动作监听。注意事项1. 在 List View 中 item 是以数组的形式存放的,第一个下标为 0,不是 1.2. 在 LinearLayout 布局中,同一级的 LinearLaout 中 layout_weight 的值的比相当于比例。先设置大的容器的走向,然后设置大的容器里面控件的布局走向。3. 在 List View 中,id 需设为+id/android:list ,如果为+id/list 就会报错。4. TabHost.TabSpec 是一个类,它继承了 object

12、,不是一个函数。5. 在 Grid View 中,当继承了 BaseAdapter,需要重写 getCount ,getItem, getItemId 这几个函数,如果不写,程序就无法运行,重写时要注意返回的值,如果没有修改,为 0,NULL,NULL ,就不会出现设计的界面。6. 对于相对布局的实现,在 xml 文件的 Graphical Layout 中可以进行简单的拖拽以实现可视化布局,但是往往容易移动一个,另外相对于它的组件会做出相应的移动,所以要将在 Graphical Layout 的操作与代码实现结合起来完成布局。7. 需要注意的是,一个控件属性并不是在所有布局中都生效的,往往是

13、在某个布局中,这个控件的某些属性生效。8. padding 属性与 margin 属性的区别:padding 是站在父 view 的角度描述问题,它规定它里面的内容必须与这个父 view 边界的距离。margin 则是站在自己的角度描述问题,规定自己和其他(上下左右)的 view 之间的距离,如果同一级只有一个 view,那么它的效果基本上就和 padding 一样了。9. 在实现 Tab 页面的 tab.xml 中,TabHost ,TabWidget ,FrameLayout 的 ID 必须分别为android:id/tabhost,android:id/tabs,android:id/t

14、abcontent。10. LinearLayout 默认是横向的。11. TabWidget 中用一个 activity 实现一个 Tab 只是实现 Tab 的一种方法,另外也可以在用不同的布局实现不同的 Tab 这样几个 Tab 的布局可以写在一个 xml 文件中。在我做的例子的将 tab.xml 中的代码改为如下:以上的代码可以自定义每个选项卡中显示的内容。需要注意的是在启动 Activity 中跳转时 setContent(intent);需要改为setContent(R.id.layout1);12. layou_gravity 与 gravity 的区别:android:layout_gravity android:gravity 类似的,其他的属性也是如此。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报