Android UI 概览

1、Android应用中的绝大部分的UI组件都位于   android.widget包及其子包 、android.view包           java

及其子包中,全部的UI组件都继承了View类,这个View类是一个实际的类,不是抽象类或者接             android

口,View还有一个很是重要的子类——ViewGroup , ViewGroup是一个抽象类,全部的布局           布局

管理器,如:LinearLayout类都是它的子类,这些类都是实际的类,通常ViewGroup的子类是              xml

当作容器来使用的,并且因为ViewGroup自己就是View的子类,因此在这些容器中还可以添加           继承

ViewGroup容器,这样一来就可以构建UI系统了 ;也就说View和ViewGroup构成了Android          get

中的所有UI界面string

2、咱们知道因为在Android中提倡使用XML来布局UI组件,那么全部的组件天然就会有XML属性容器

      有这些属性来控制UI组件的属性,固然这些属性大多也有java方法与之对应,以便使用java代码           方法

来控制组件layout

3、ViewGroup抽象类中含有两个静态内部类:

       ViewGroup.LayoutParams 、 ViewGroup.MarginLayoutParams

       (注:实际上后者是前者的子类)

       当咱们向ViewGroup的子类容器中添加组件时,须要使用这两个内部类来指定,到底以何种方             

式添加,好比:组件的布局大小,组件的位置等属性

       注意在ViewGroup的全部子类中,都含有继承自ViewGroup.LayoutParams 或者              

ViewGroup.MarginLayoutParams的静态内部类,这些静态内部类的名字都叫作         

类名.LayoutParams   ,如:LinearLayout.LayoutParams ; 这样一来无论指定组件

       添加到何种ViewGroup容器中,均可以使用对应的静态内部类的XML属性来指定添加方式,

       这些静态内部类中都有对应的XML属性,好比:android:layout_height、

      android:layout_width属性,使用方法如:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    

xmlns:tools="http://schemas.android.com/tools"    

android:layout_width="match_parent"    

android:layout_height="match_parent" >

    <TextView         android:id="@+id/textView1"        

android:layout_width="wrap_content"        

android:layout_height="wrap_content"        

android:text="@string/hello_world" />

</RelativeLayout>

也就是说在组件的属性定义区中直接使用android:layout_width属性就好了 ; 你可能会有费解

“这些静态内部类的XML属性并非这些组件的XML属性,为何可以直接在组件中使用,而不用声  

明一下:我使用的属性,是静态内部类中指定的属性 呢?”,实际上已经指定了咱们使用的属性是

静态内部类指定的属性,android:layout_width中的 layout 关键字就是设个说明,咱们可能注意

到,组件的属性中已经有android:width这样的属性了,因此说android:layout_width和

android:width的不一样,就体现出来了; 因此之后在看到带有layout或者layout_margin(如:

android:layout_marginTop)的XML属性,就应知道这是

使用的是静态内部类中的属性,而不带有layout的属性的XML属性,则是组件自己带有的属性;

实际上咱们能够查看:《疯狂Android》P45中代码,就会发现当咱们使用java代码来指定Button组

件的属性时,若是使用LinearLayout的静态内部类的属性时,使用方式什么样的;这就是内部机制,

只是使用XML时将这些内部机制给隐藏起来了

4、按照上面的说法既然组件自己已经有了有了想android:width属性了,为何还要使用静态内             

部类指定的android:layout_width这个布局属性(注意这叫作布局属性,即布局高度、布局             

宽度),由于Android中规定一个组件的大小是由布局和实际大小共同决定的,至于决定方式

见《疯狂android》P44

相关文章
相关标签/搜索