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

相關文章
相關標籤/搜索