標籤:
Android絕大部分UI組件都放在android.widget,android.view包及其子包,android應用中所以UI組件都繼承了View類,View代表一個空白的矩形地區;
android所有UI組件都建立在View和ViewGroup基礎之上的;View類是所有UI組件的基類,ViewGroup是一個抽象類別,通常使用其子類來作為容器;
View 類
View類為所有可視化控制項的基類,主要提供了控制項和事件處理的方法,比如TextView,Button,CheckBox等;
View類常見屬性及對應方法說明:
Android:background
SetBackgroundResource(int)
設定背景
Android:clickable
SetClickable(boolean)
設定View是否響應單擊事件
Android:visibility
SetVisibiltiy(int)
控制View的可見度
Android:focusable
SetFocusable(boolean)
控制View是否可以擷取焦點
Android:id
SetId(int)
為View設定標識符,可以通過findViewById方法擷取Id
Android:longClickable
SetLongClickable(boolean)
設定View是否響應長單擊事件
Android:soundEffectEabled
setSoundEffectsEnable(boolean)
設定View觸發單擊等事件是否播放音效
Android:saveEnable
SetSaveEnabled(boolean)
View凍結時是否儲存狀態
Android:nextFocusDown
SetNextFocusDownId(int)
定義向下擷取焦點的View
Android:nextFocusLeft
Android:nextFocusRight
Android:nextFocusUp
定義不同操作方向擷取焦點的View
任何繼承View的子類都擁有如上的屬性及方法;
ViewGroup類是View類的子類,但是可以充當其他控制項的容器,ViewGroup的子控制項既可以是普通的View,也可以是ViewGroup;
關於View和ViewGroup的關係
View是基類,ViewGroup是View的子類;
View代表使用者介面組件一塊可以繪製的空間塊;
每一個View在螢幕上佔據一個長方形地區,在這個地區,view負責映像繪製和事件處理;
View類是小控制項widgets和ViewGroup的父類;ViewGroup又是Layout的基類;
線性布局
提供控制項水平或豎直排列的模型;
Android:orientation
SetOrientation(int)設定線性布局的朝向;
Android:gravity
SetGrabity(int)設定線性布局內部元素的布局方式;
表格版面配置
TableLayout類以行和類的形式管理控制項,每行為一個TableRow對象,也可以為View對象,當為View對象時,該View對象將跨越該行的所有類;
在表格版面配置中,一個列的寬度由該列中最寬的那個單元指定,而表格的寬度由父容器指定;
在TableLayout中,可以為列設定如下3種屬性;
Shrinkable 如果一個列被標誌為Shrinkable,則該列的寬度可以進行收縮,以使表格能夠適應其父容器的大小;
Stretchable 如果一個列被標誌位Stretchable,則該列的寬度可以進行展開,以 填滿表格中閒置空間。
Collapsed,則該列會被隱藏;
TableLyout繼承LinearLayout類,TableLyout類特有的屬性和方法如下:
SetColumnCollapsed(int,boolean)
列號從0開始,設定指定列號的列為Collapsed
同樣,可以設定Shrinkable,Stretchable;
RelativeLayout
在相對布局中,子控制項的位置是相對兄弟控制項或父容器而決定的;
屬 性 名 稱 |
屬 性 說 明 |
android:layout_centerHorizontal |
當前控制項位於父控制項的橫向中間位置 |
android:layout_centerVertical |
當前控制項位於父控制項的縱向中間位置 |
android:layout_centerInParent |
當前控制項位於父控制項的中央位置 |
android:layout_alignParentBottom |
當前控制項底端與父控制項底端對齊 |
android:layout_alignParentLeft |
當前控制項左側與父控制項左側對齊 |
android:layout_alignParentRight |
當前控制項右側與父控制項右側對齊 |
android:layout_alignParentTop |
當前控制項頂端與父控制項頂端對齊 |
android:layout_alignWithParentIfMissing |
參照控制項不存在或不可見時參照父控制項 |
接下來再來看屬性值為其他控制項id的屬性,如表3-6所示。
表3-6 相對布局中取值為其他控制項id的屬性及說明
屬 性 名 稱 |
屬 性 說 明 |
android:layout_toRightOf |
使當前控制項位於給出id控制項的右側 |
android:layout_toLeftOf |
使當前控制項位於給出id控制項的左側 |
android:layout_above |
使當前控制項位於給出id控制項的上方 |
android:layout_below |
使當前控制項位於給出id控制項的下方 |
android:layout_alignTop |
使當前控制項的上邊界與給出id控制項的上邊界對齊 |
android:layout_alignBottom |
使當前控制項的下邊界與給出id控制項的下邊界對齊 |
android:layout_alignLeft |
使當前控制項的左邊界與給出id控制項的左邊界對齊 |
android:layout_alignRight |
使當前控制項的右邊界與給出id控制項的右邊界對齊 |
最後要介紹的是屬性值以像素為單位的屬性及說明,如表3-7所示。
表3-7 相對布局中取值為像素的屬性及說明
屬 性 名 稱 |
屬 性 說 明 |
android:layout_marginLeft |
當前控制項左側的留白 |
android:layout_marginRight |
當前控制項右側的留白 |
android:layout_marginTop |
當前控制項上方的留白 |
android:layout_marginBottom |
當前控制項下方的留白 |
FrameLayout類
幀布局
FrameLayout幀布局在螢幕上開闢了一塊地區,在這塊地區中可以添加多個子控制項,但是所有的子控制項都被對齊到螢幕的左上方,幀布局的大小由子控制項中尺寸最大的那個子控制項來決定,如果子控制項一樣大,同一時刻只能看到最上面的子控制項;
FrameLayout繼承自ViewGroup,FrameLayout所特有的屬性和方法如下:
Android:foreground
SetForeground(Drawable)
設定繪製所有子控制項之上的內容
Android:foregroundGravity
SetForegroundGraviety(int)
設定繪製所有子控制項之上內容的gravity屬性
在FrameLayout中,子控制項是通過棧來繪製的,所以後添加的子控制項會被繪製在上層;
AbsoluteLayout類
所謂絕對布局,是指螢幕中所有控制項擺放的控制項位置由座標來指定;
03 Android應用介面編程