android布局單位
⑴ android的ui布局有哪些
布局(Layout)的概念是針對Activity的,Activity就是布滿整 個Android設備的窗口或者懸浮於其他窗口上的交互界面。在一個應用程序中通常由多個Activity構成,每個需要顯示的Activity都需要在AndroidManifest.xml文件之中聲明。
通常情況下,開發人員可以使用兩種方式來創建UI組件,一種方式是使用XML方式來配置UI組件的相關屬性,然後裝載這些UI組件,這也是最常用的方式。但是有些特殊情況下,需要動態生成UI組件,則需要使用第二種方式,完全使用java代碼來創建UI組件。
XML布局文件是Android系統中定義的Layout的常用方式,所有布局文件必須包含在res/layout目錄中,且必須符合Java的命名 規范。當在res/layout目錄下新增了布局文件之後,R.java文件會自動收錄該布局資源,Java代碼可通過setContentView方法 在Activity中顯示該Layout。
setContentView(R.layout.<資源名稱>);
在布局文件中可以指定UI組件的android:id屬性,該屬性的屬性值代表該組件的唯一標識。通過Activity.findViewById()訪問,並且findViewById()必須在setContentView載入xml文件之後使用,否則會拋出異常。
findViewById(R.id.)
Android應用的絕大部分UI組件都放在android.widget包及其子包、android.view包及其子包中,Android應用的 所有UI組件都繼承了View類。View類還有一個重要的子類:ViewGroup,ViewGroup類是所有布局管理器的父類。
ViewGroup容器控制其子組件的分布依賴於ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams兩個內部類。
ViewGroup.LayoutParams提供兩個XML屬性設定組件的大小。
android:layout_height:指定該子組件的基本高度;
android:layout_width:指定該子組件的基本寬度。
這兩個屬性有三個基本值,這兩個屬性有三個特定的值:
fill_parent:指定組件的高度、寬度與父容器組件的一樣。
match_parent:與fill_parent一樣,Android2.2開始推薦使用。
warp_content:內容包裹。
ViewGroup.MarginLayoutParams用於控制子組件周圍的頁邊距。
android:layout_marginBottom(下邊距);
android:layout_marginLeft(左邊距);
android:layout_marginRight(右邊距):
layout_marginTop(上邊距)
對於View的尺寸,android提供了三種單位供選擇使用:
px:像素。
dp:dpi,表示屏幕實際的像素。
sp:與scale無關的像素,與dp類似。
尺寸單位選擇的技巧:如果設置長度、高度等屬性時可以使用dp或sp,但是如果設置字體,需要使用px。如果使用dp或sp,系統會根據屏幕密度的變化進行轉換。
為了適應各種界面風格,Android提供了五種布局規范,利用這五種布局,基本上可以在設備上隨心所欲的擺放任何UI組件,這五種布局分別是:
FrameLayout(幀布局)。
LinearLayout(線性布局)
RelativeLayout(相對布局)。
TableLayout(表格布局)。
AbsoluteLayout(絕對布局)。
線性布局(LinearLayout)
LinearLayout是最常用的布局方式,在XML文件中使用標記。它會將容器里的UI組件一個一個挨著排列起來。但是LinearLayout不會換行,當UI組件超出屏幕之後,則不會被顯示出來。LinearLayout有兩個重要的XML屬性:androidgravity(對齊方 式);android:orientation(排列方式)。
android:orientation(排列方式),設定了LinearLayout中包含的UI組件的排列方式,有兩個選項vertical(豎向)、horizontal(橫向,默認值)
android:gravity(對齊方式),設定LinearLayout中包含UI組件的對齊方式,其選項很多,常用上(top)、下(bottom)、左(left)、右(right)。
⑵ Android的五大布局
1.RelativeLayout 相對布局
2. LinearLayout 線性布局
3. FrameLayout 幀布局
4.TableLayout 表格布局 (被GridView代替)
5.AbsoluteLayoutf 絕對布局(已經被谷歌廢棄,幾乎不會用到)
相對布局RelativeLayout允許子元素指定它們相對於其父元素或兄弟元素的位置,這是實際布局中最常用的布局方式之一。
特點:相對於其他空間的位置,和相對父元素的位置進行布局;
layout_centerHorizontal(相當於父節點是水平居中)
layout_centerVertical(相當於父節點是垂直居中)
layout_centerInParent(相當於父節點在正中間)
layout_above(在XX之上)
layout_below(在XX之下)
layout_toLeft(在XX的左邊)
layout_toRight(在XX的右邊)
layout_alignParentTop(和父節點的頂部對齊)
layout_alignParentBottom(和父節點的底部對齊)
layout_alignParentLeft(和父節點的左邊對齊)
layout_alignParentRight(和父節點的右邊對齊)
layout_alignTop(和XXX頂部對齊)
layout_alignBottom(和XXX底部對齊)
layout_alignLeft (和XXX左邊對齊)
layout_alignRight(和XXX右邊對齊)
線性布局LinearLayout是根據指定朝向orientation水平Horizontal或者垂直Vertical方向排列的布局,其最大的特點是可以給子控制項按照權重weight屬性分配空間.
常見案例:計算器
3. FrameLayout 幀布局
通俗的講就是在屏幕上一層覆蓋著一層的控制項,在fragment中比較常用
<TextView
android:layout_width= "200px"
android:layout_height= "200px"
android:layout_gravity= "center"
android:background= "#00ff00"
android:gravity= "center" />