zoukankan      html  css  js  c++  java
  • 界面编程与视图(View)组件

    一、视图组件与容器组件

         Android应用的绝大部分UI组件都放在android.widget包及其子包、android.view包及其子包中,Android应用的所有UI组件都继承了View类。

         View类有重要的子类:ViewGroup,但ViewGroup通常作为其他组件的容器使用。

        Android的所有UI组件都是建立在View、ViewGroup基础之上的,Android采用了“组合器”设计模式来设计View和ViewGroup:ViewGroup是View的子类,因此ViewGroup也可被当成View使用。对于一个Android应用的图形图形用户界面来说,ViewGroup作为容器来盛装其他组件,而ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGroup组件。

        图2.1显示了Android图形用户界面的组件层次图。
      

    图2.1图形用户界面的组件层次图

        Android推荐使用XML布局文件来定义用户界面,而不是使用Java代码来开发用户界面,因此所有组件都提供了两种方式来控制组件的行为:

    •  在XML布局文件中通过XML属性进行控制。
    • 在Java程序代码中通过调用方法进行控制。   

       

       ViewGroup继承了View类,当然也可以当成普通View来使用,但VewGroup主要还是当成容器类使用。但由于ViewGroup是一个抽象类,因此实际使用中通常总是使用ViewGroup的子类作为容器,例如各种布局管理器。

       ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。这两个内部类都提供了一些XML属性,ViewGroup容器中的子组件可以指定这些XML属性。    

       图2.2显示了ViewGroup.LayoutParams所支持的两个XML属性

        XML属性        说明
    android:laout_height 指定子组件的布局高度
    android:layout_height 指定该子组件的布局宽度

     android:layout_height、android:layout_width两个属性,支持如下三个属性值。

    • fill_parent:指定子组件的高度、宽度与父容器组件的高度、宽度相同(实际上还要减去填充的空白距离)
    • match_parent:该属性值与fill_parent完全相同,且从Android 4.2开始就推荐使用这个属性来代替fill_parent。
    • wrap_content:指定子组件的大小恰好能包裹它的内容即可。

    图2.3显示了ViewGroup.MarginLayoutParams用于控制子组件周围的页边距(Margin,也就是组件四周的留白),它支持的XML属性如图2.3所示

    XML属性 相关方法 说明
    android:layout_marginBottom setMargins(int,int,int,int) 指定该子组件下边的页边距
    android:layout_marginLeft setMargins(int,int,int,int) 指定该子组件左边的页边距
    android:layout_marginRight setMargins(int,int,int,int) 指定该子组件右边的页边距
    android:layout_marginTop   setNargins(int,int,int,int) 指定该子组件上边的页边距

    二、使用XML布局文件控制UI界面

         Android推荐使用XMl布局文件来控制视图,这样不仅简单、明了,而且可以将应用的视图控制逻辑从Java代码中分离出来,放入XML文件中控制,从而更好的体现MVC原则。

         当我们在Android应用的res/layout目录下定义一个主文件名任意的XML布局文件之后(R.java会自动收录该布局资源),Java代码可通过如下方法在Activity中显示该视图:

                         setContentView(R.layout.<资源文件名>)                                                        

          当在布局文件中添加多个UI组件时,都可以为该UI组件指定android:id属性,该属性的属性值代表该组件的唯一标识。接下来如果希望在Java代码中访问指定UI组价,可通过如下代码来访问它:

                        findViewById(R.id.<android.id.属性值>)                                                         

          一旦在程序中获得指定UI组件之后,接下来就可以通过代码来控制UI组件的外观行为啦,包括为UI组件绑定事件监听器等。

  • 相关阅读:
    2014 中华架构师大会 回想
    mybatis重拾---部署官方demo
    D 语言学习感受
    D语言学习
    D语言简介
    C++输入cin详解
    C++源文件的后缀名问题
    C 函数指针详解
    Linux下的五个查找命令:grep、find、locate、whereis、which
    Qt---QFtp上传、下载二进制文件
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3336194.html
Copyright © 2011-2022 走看看