安卓布局速記

來源:互聯網
上載者:User

標籤:

布局類別與名稱意義

1.布局類別

Linear Layout:線性布局 Relative Layout:相對布局 

Table Layout:表格布局 FrameLayout :架構布局

AbsoluteLayout :絕對布局GridView:網格布局 

Tab Layout:選項卡布局 List View:列表布局

 

2.參數設定

layout_margin是控制項邊緣相對於父控制項的邊距

layout_padding是控制項內容相對於控制項邊緣的邊距

wrap_content填滿父控制項的空白

fill_parent表示大小剛好足夠顯示當前控制項裡的內容

match_parent在Android2.2中啟動match_parent,不用fill_parent

Linear Layout (線性布局)

layout_gravity 相對於父元素的重力值(預設top|left):

(top|bottom|left|right|center_vertical|fill_vertical|center_ horizontal

|fill_ horizontal | center| fill)

LinearLayout有兩個非常相似的屬性:

 android:gravity

 android:layout_gravity

他們的區別在於:

android:gravity屬性是對該view中內容的限定.比如一個button上面的text. 你可以設定該text相對於view的靠左,靠右等位置.

android:layout_gravity是用來設定該view相對與父view的位置.比如一個button在linearlayout裡,你想把該button放在linearlayout裡靠左、靠右等位置就可以通過該屬性設定.

android:gravity用於設定View中內容相對於View組件的對齊,而android:layout_gravity用於設定View組件相對於Container的對齊。

Relative Layout (相對布局)

RelativeLayout允許子項目指定他們相對於其它元素或父元素的位置(通過ID 指定)。因此,你可以以靠右對齊,或上下,或置於螢幕中央的形式來排列兩個元素。元素按順序排列,因此如果第一個元素在螢幕的中央,那麼相對於這個元素的其它元素將以螢幕中央的相對位置來排列。如果使用XML 來指定這個 layout ,在你定義它之前,被關聯的元素必須定義。

LayoutParams中特殊的參數 :

< 1>屬性值為true或false

android:layout_centerHrizontal            水平置中

android:layout_centerVertical             垂直置中

android:layout_centerInparent             相對於父元素完全置中

android:layout_alignParentBottom          貼緊父元素的下邊緣

android:layout_alignParentLeft            貼緊父元素的左邊緣

android:layout_alignParentRight           貼緊父元素的右邊緣

android:layout_alignParentTop             貼緊父元素的上邊緣

android:layout_alignWithParentIfMissing   若找不到兄弟元素以父元素做參照物

< 2>屬性值必須為id的引用名”@id/id-name”

android:layout_below               在某元素的下方

android:layout_above               在某元素的上方

android:layout_toLeftOf            在某元素的左邊

android:layout_toRightOf           在某元素的右邊

android:layout_alignBaseLine       該控制項的baseline和給定ID的控制項的Baseline對齊

android:layout_alignTop            本元素的上邊緣和某元素的的上邊緣對齊

android:layout_alignLeft           本元素的左邊緣和某元素的的左邊緣對齊

android:layout_alignBottom         本元素的下邊緣和某元素的的下邊緣對齊

android:layout_alignRight          本元素的右邊緣和某元素的的右邊緣對齊

< 3>屬性值為具體的像素值,如30dip,40px

android:layout_marginBottom        離某元素底邊緣的距離

android:layout_marginLeft          離某元素左邊緣的距離

android:layout_marginRight         離某元素右邊緣的距離

android:layout_marginTop           離某元素上邊緣的距離

TableLayout (表格布局)

TableLayout 將子項目的位置分配到行或列中。一個TableLayout由許多的TableRow 組成,每個TableRow 都會定義一個 row(事實上,你可以定義其它的子物件)。

TableLayout 容器不會顯示row 、cloumns 或cell 的邊框線。每個row擁有0個或多個的cell;每個cell 擁有一個View對象。

表格由列和行組成許多的單元格。表格允許單元格為空白。單元格不能跨列,這與HTML 中的不一樣。

特殊的參數:

android:stretchColumns  伸展的列的索引

android:shrinkColumns   收縮的列的索引

android:collapseColumns 倒塌的列的索引(即銷毀)

表示兩行兩列的一個表格。 android:gravity=”center”書面解釋是權重比。其實就是讓它置中顯示。

它還可以動態添加裡面的每行每列。如下代碼所示:

TableLayout tableLayout = (TableLayout)findViewById(R.id.table01);

TableRow tableRow = new TableRow(this);

TextView temp = new TextView(this);

temp.setText("text的值");

tableRow.addView(temp);

android:stretchColumns=”1,2,3,4″ 它的意思就是自動展開1,2,3,4列。

AbsoluteLayout (絕對布局)

AbsoluteLayout可以讓子項目指定準確的x/y座標值,並顯示在螢幕上。(0,0)為左上方,當向下或向右移動時,座標值將變大。

AbsoluteLayout沒有頁邊框,允許元素之間互相重疊(儘管不推薦)。我們通常不推薦使用

AbsoluteLayout,除非你有正當理由要使用它,因為它使介面代碼太過剛性,以至於在不同的裝置上可能不能很好地工作。

LayoutParams中特殊的參數 :

layout_x  x方向的座標

layout_y  y方向的座標

 

FrameLayout ( 幀布局 )

FrameLayout是最簡單的一個布局對象。它被定製為你螢幕上的一個空白備用地區,之後你可以在其中填充一個單一對象。比如,一張你要發布的圖片。所有的子項目將會固定在螢幕的左上方;你不能為FrameLayout中的一個子項目指定一個位置。後一個子項目將會直接在前一個子項目之上進行覆蓋填充,把它們部份或全部擋住(除非後一個子項目是透明的)。

裡面可以放多個控制項,不過控制項的位置都是相對位置

LayoutParams中特殊的參數 :

layout_gravity 相對於父元素的重力值(用法同LinearLayout)

注意事項:

各布局不要亂用各自的屬性。比如把屬於AbsoluteLayout布局的android:layout_x和android:layout_y用到LinearLayout布局或RelativeLayout布局,或者把RelativeLayout布局的 below,rightof等屬性應用到其他布局中。這樣做雖然不會報錯,但是根本達不到我們需要的效果。

關於android:layout_width=”fill_parent”和android:layout_height=”wrap_content”,這是對每個布局寬和高的設定。wrap_content可表示隨著其中控制項的不同而改變這個布局的寬度或高度,類似於自動化佈建寬和高,fill_parent使布局填充整個螢幕,另外還有一種match_parent,它本質上和 fill_parent 一樣,並從API Level8開始替代fill_parent。

 

布局複用

1、活用include

例如在layout中建立一個名為include_title.xml的檔案。然後在需要添加標題的xml檔案中加上 <include layout="@layout/include_title" />這話便可將標題顯示在當前頁面中,
例如:  

<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"    android:layout_height="match_parent"   android:orientation="vertical" >    <include layout="@layout/include_title" /></LinearLayout>


 

2、使用extends

在一些頁面中,我們總是需要共用一些頁面顯示效果的功能,例如Toast,Dialog等等。在這時,我們可以將這些東西封裝到一個Activity中,當某個Activity需要使用裡面的功能的時候,只要直接去繼承它們,然後調用相應的方法即可。以下為製作一個BaseActivity的例子代碼:

import android.app.Activity;import android.widget.Toast;public class BaseActivity extends Activity{         /**          * 彈出提示(int)          *          * @param intContent          */         public void showToast(int intContent) {                   Toast.makeText(getApplication(),intContent, Toast.LENGTH_SHORT).show();         }                 /**          * 彈出提示(String)          *          * @param intContent          */         public void showToast(String strContent) {                   Toast.makeText(getApplication(),strContent, Toast.LENGTH_SHORT).show();         }}


 

當我們需要使用Toast的時候,只要繼承這個BaseActivity這個類,然後直接調用showToast(參數)方法便可以直接彈出Toast,是不是簡單一些呢。

 

 

3、類的封裝

在2中講的是將頁面顯示的效果封裝起來,而這裡講的是將功能代碼封裝起來。在一些時候,我們需要重複調用一個功能方法,是不是覺得複製粘貼很麻煩呢,在這時,我們只需要將其功能代碼封裝起來,供以後調用。這也就是MVC模式中的Model層。例如:

 

我們建立一個名為Tools的Java類,其代碼為:

/** * 工具類 * */public class Tools {          public static void outPut(Object obj) {                                     System.out.println(obj);                           }}

在這時,假如我們想輸出一個資料的時候,直接調用Tools.outPut(參數)方法便可輸出資料。

 

4、使用string.xml和color.xml

開發一個APP的時候,我們難免會使用到一些顏色值或者文字,在這時,我們應該將其放在相對應的color.xml或string.xml檔案中,這樣不僅提高代碼的複用性,而且也便於修改,而不用到時改點需求的時候,就要到處找出頁面修改其顏色值和文字。

例如:color.xml檔案

<?xml version="1.0"encoding="utf-8"?><resources>    <color name="transparent">#00000000</color>   <color name="black">#000000</color>   <color name="blue">#5DC0F8</color> </resources>


 

使用的時候:

   <TextView       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="標題"       android:textColor="@color/blue" />

string.xml的就不舉例了,估計大家都懂了。


5、使用library

當做項目做多的時候,就會發現,其實,很多功能或者效果什麼的,都非常相似,在這時,我們就該收集一下那些基本代碼,將其封裝在一個library中,等到用時直接載入這個library,而不需要重新寫。其實就是和匯入開源架構一樣。

安卓布局速記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.