Android开发:view的几种布局方式

1、view的布局显示概述:

    我们知道,在一个Android应用程序中,用户界面通过ViewViewGroup对象构建。Android中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。

    View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎样布局。ViewGroup类是布局(layout)和视图容器(View container)的基类,此类也定义了ViewGroup.LayoutParams类,它作为布局参数的基类,此类告诉父视图其中的子视图想如何显示。我们要介绍的View的布局方式的类,都是直接或间接继承自ViewGroup类,如下图所示:

Android开发:view的几种布局方式

Android开发:view的几种布局方式
    其实,所有的布局方式都可以归类为ViewGroup的5个类别,即ViewGroup的5个直接子类。其它的一些布局都扩展自这5个类。

2、线性布局(Linear Layout)

    线性布局:是一个ViewGroup以线性方向显示它的子视图(view)元素,即垂直地水平地。(android:orientation="vertical/horizontal"

Tips:android:layout_height="1"(默认为0)

Android开发:view的几种布局方式
3、相对布局(Relative Layout)

    相对布局:是一个ViewGroup以相对位置显示它的子视图(view)元素,一个视图可以指定相对于它的兄弟视图的位置或相对于RelativeLayout的特定区域的位置。相对布局是设计用户界面的有力工具,因为它消除了嵌套视图组。

4、表格布局(Table Layout)

    表格布局:是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。其实Android的表格布局跟HTML中的表格布局非常类似,TableRow就像HTML表格的<<CODE>tr>标记。

用表格布局需要知道以下几点:

    android:shrinkColumns,对应的方法:setShrinkAllColumns(boolean),作用:设置表格的列是否收缩(列编号从0开始,下同),多列用逗号隔开(下同),如android:shrinkColumns="0,1,2",即表格的第1、2、3列的内容是收缩的以适合屏幕,不会挤出屏幕。

    android:collapseColumns,对应的方法:setColumnCollapsed(int,boolean),作用:设置表格的列是否隐藏

    android:stretchColumns,对应的方法:setStretchAllColumns(boolean),作用:设置表格的列是否拉伸

5、列表视图(List View)

    列表布局:是一个ViewGroup以列表显示它的子视图(view)元素,列表是可滚动的列表。列表元素通过ListAdapter自动插入到列表。

    ListAdapter扩展自Adapter,它是ListView和数据列表之间的桥梁。ListView可以显示任何包装在ListAdapter中的数据。该类提供两个公有类型的抽象方法:

    public abstract boolean  areAllItemsEnabled () :表示ListAdapter中的所有元素是否可激活的?如果返回真,即所有的元素是可选择的即可点击的。

    public abstract boolean  isEnabled (int position) :判断指定位置的元素是否可激活的?

Note:补充说明:

    onCreate()函数中通过setListAdapter(ListAdapter)自动添加一个ListView填充整个屏幕的ListActivity。

    总结一下列表布局的关键部分:

    布局文件中定义ListView

    Adapter用来将数据填充到ListView

    要填充到ListView的数据,这些数据可以字符串、图片、控件等等

    其中Adapter是ListView和数据源之间的桥梁,根据数据源的不同,Adapter可以分为三类:

    String[]: ArrayAdapter

    List>: SimpleAdapter

    数据库Cursor: SimpleCursorAdapter

    使用ArrayAdapter(数组适配器)顾名思义,需要把数据放入一个数组以便显示;SimpleAdapter能定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等;SimpleCursorAdapter是和数据库有关的东西。

6、网格视图(Grid View)

    网格布局:是一个ViewGroup以网格显示它的子视图(view)元素,即二维的、滚动的网格。网格元素通过ListAdapter自动插入到网格。

    ImageAdapter类扩展自BaseAdapter。getView()方法为每个要添加到ImageAdapter的图片都创建了一个新的View。当调用这个方法时,一个View是循环再用的,因此要确认对象是否为空。如果是空的话,一个ImageView就被实例化且配置想要的显示属性:

    setLayoutParams(ViewGroup.LayoutParams):设置View的高度和宽度,这确保不管drawable中图片的大小,每个图片都被重新设置大小且剪裁以适应这些尺寸。

    setScaleType(ImageView.ScaleType):声明图片应该向中心剪裁(如果需要的话)。

    setPadding(int,int,int,int):定义补距,如果图片有不同的横纵比,小的补距将导致更多的剪裁以适合设置的ImageView的高度和宽度。

    如果View传到getView()不是空的,则本地的ImageView初始化时将循环再用View对象。

7、绝对布局(AbsoluteLayout)

    绝对布局:是一个ViewGroup以绝对方式显示它的子视图(view)元素,即以坐标的方式来定位在屏幕上位置。

8、标签布局(Tab Layout)

    标签布局:是一个ViewGroup以标签的方式显示它的子视图(view)元素,就像在Firefox中的一个窗口中显示多个网页一样。

    为了创建一个标签UI(tabbed UI),需要使用到TabHost和TabWidget。TabHost必须是布局的根节点,它包含为了显示标签的TabWidget和显示标签内容的FrameLayout。TabHost的引用第一次是通过getTabHost()获取的。

    可以有两种方式实现标签内容:使用标签在同一个活动中交换视图、使用标签在完全隔离的活动之间改变。根据你的需要,选择不同的方式,但是如果每个标签提供不同的用户活动,为每个标签选择隔离的活动,因此你可以更好地以分离的组管理应用程序,而不是一个巨大的应用程序和布局。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值