android界面佈局,很好的一篇總結

佈局: 

  在 android 中我們常用的佈局方式有這麼幾種:

1.LinearLayout ( 線性佈局 ) :(裡面隻可以有一個控件,並且不能設計這個控件的位置,控件會放到左上角)

                                           線性佈局分為水平線性和垂直線性二者的屬性分別為: android:orientation=" horizontal "   android:orientation= "vertical" 。

 2.RelativeLayout ( 相對佈局 ) :(裡面可以放多個控件,但是一行隻能放一個控件)

 

 

附加幾類 RelativeLayout 的屬性供大傢參考:

第一類 : 屬性值為 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   若找不到兄弟元素以父元素做參照物

 

第二類:屬性值必須為 id 的引用名“ @id/id-name ”

android:layout_below                          在某元素的下方

android:layout_above                          在某元素的上方

android:layout_toLeftOf                       在某元素的左邊

android:layout_toRightOf                     在某元素的右邊

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

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

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

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

 

第三類:屬性值為具體的像素值,如 30dip , 40px

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

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

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

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

 

 

 

          3.TableLayout ( 表格佈局 ) :(這個要和TableRow配合使用,很像html裡面的table)

 

這個表格佈局不像HTML中的表格那樣靈活,隻能通過 TableRow 屬性來控制它的行而列的話裡面有幾個控件就是幾列(一般情況)。如:

                                                    <TableLayout>

<TableRow>

                                                              <EditText></EditText>

                                                              <EditText></EditText>

</TableRow>

<TableRow>

                                                               <EditText></EditText>

                                                               <EditText></EditText>

</TableRow>

</TableLayout>

表示兩行兩列的一個表格。

 

 

android:gravity="center" 書面解釋是權重比。其時就是讓它居中顯示。它還可以動態添加裡面的每行每列。如下代碼所示:

/*根據id查找表格對象*/

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列。

                                                  

4.AbsoluteLayout ( 絕對佈局 ) :(裡面可以放多個控件,並且可以自己定義控件的x,y的位置)

5.FrameLayout ( 幀佈局 ) :(裡面可以放多個控件,不過控件的位置都是相對位置)

                               在它裡面的控件都是按後面的一個控件疊加在前一個控件上來顯示的,所有元素都被放置在最左上角。如:

                                     <FrameLayout android:layout_width="wrap_content"

                                                        android:layout_height="wrap_content" android:layout_weight="1">

                                              <ImageView android:id="@+id/iv1" android:layout_width="wrap_content"

                                                            android:layout_height="wrap_content" android:visibility="invisible"

                                                            android:src="@drawable/lotusleaf"></ImageView>

                                             <ImageView android:id="@+id/f1" android:layout_width="wrap_content"

                                                            android:layout_height="wrap_content" android:src="@drawable/frog_right"

                                                            android:visibility="invisible"></ImageView>

                                         </FrameLayout>

表示的是id為f1的控件疊加在id為iv1的控件上面顯示

 

          (LinearLayout 和 RelativeLayout 應該又是其中用的較多的兩種。AbsoluteLayout 比較少用,因為它是按屏幕的絕對位置來佈局的如果屏幕大小發生改變的話控件的位置也發生瞭改變。這個就相當於HTML中的絕對佈局一樣,一般不推薦使用 ) 

 

 

 註意事項:

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

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

 

TextView 的屬性 :

android:autoLink              //設置是否當文本為URL鏈接/email/電話號碼/map時,文本顯示為可點擊的鏈接。可選值(none/web /email/phone/map/all)

android:autoText                   //如果設置,將自動執行輸入值的拼寫糾正。此處無效果,在顯示輸入法並輸入的時候起作用

android:bufferType               //指定getText()方式取得的文本類別。選項editable 類似於StringBuilder可追加字符,也就是說getText後可調用append方法設置文本內容。spannable 則可在給定的字符區域使用樣式

android:capitalize                  //設置英文字母大寫類型。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明

android:cursorVisible              //設定光標為顯示/隱藏,默認顯示

android:digits                     //設置允許輸入哪些字符。如“1234567890.+-*/% ()”

android:drawableBottom         //在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會把text的背景設為該顏色,並且同時和background使用時覆蓋後者

android:drawableLeft             //在text的左邊輸出一個drawable,如圖片

android:drawablePadding         //設置text與drawable(圖片)的間隔,與drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可設置為負數,單獨使用沒有效果

android:drawableRight            //在text的右邊輸出一個drawable

android:drawableTop              //在text的正上方輸出一個drawable

android:editable                   //設置是否可編輯

android:editorExtras              //設置文本的額外的輸入數據

android:ellipsize                //設置當文字過長時,該控件該如何顯示。有如下值設置:”start”—?省略號顯示在開頭;”end” ——省略號顯示在結尾;”middle”—-省略號顯示在中間;”marquee” ——以跑馬燈的方式顯示(動畫橫向移動)

android:freezesText               //設置保存文本的內容以及光標的位置

android:gravity                    //設置文本位置,如設置成“center”,文本將居中顯示

android:hintText                 //為空時顯示的文字提示信息,可通過textColorHint設置提示信息的顏色。此屬性在 EditView中使用,但是這裡也可以用

android:imeOptions                //附加功能,設置右下角IME動作與編輯框相關的動作,如actionDone右下角將顯示一個“完成”,而不設置默認是一個回車符號。這個在EditView中再詳細說明,此處無用

android:imeActionId                 //設置IME動作ID

android:imeActionLabel              //設置IME動作標簽

android:includeFontPadding         //設置文本是否包含頂部和底部額外空白,默認為true

android:inputMethod                //為文本指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這裡報錯找不到

android:inputType                    //設置文本的類型,用於幫助輸入法顯示合適的鍵盤類型。在EditView中再詳細說明,這裡無效果

android:linksClickable                //設置鏈接是否點擊連接,即使設置瞭autoLink

android:marqueeRepeatLimit        //在ellipsize指定marquee的情況下,設置重復滾動的次數,當設置為 marquee_forever時表示無限次

android:ems                         //設置TextView的寬度為N個字符的寬度。這裡測試為一個漢字字符寬度

android:maxEms                    //設置TextView的寬度為最長為N個字符的寬度。與ems同時使用時覆蓋ems選項

android:maxLength                 //限制顯示的文本長度,超出部分不顯示

android:lines                        //設置文本的行數,設置兩行就顯示兩行,即使第二行沒有數據

android:maxLines                   //設置文本的最大顯示行數,與width或者layout_width結合使用,超出部分自動換行,超出行數將不顯示

android:minLines                    //設置文本的最小行數,與lines類似

android:lineSpacingExtra            //設置行間距

android:lineSpacingMultiplier        //設置行間距的倍數。如”$2

android:numeric                     //如果被設置,該TextView有一個數字輸入法。此處無用,設置後唯一效果是TextView有點擊效果,此屬性在EdtiView將詳細說明

android:password                    //以小點”.”顯示文本 android:phoneNumber設置為電話號碼的輸入方式

android:privateImeOptions          //設置輸入法選項,此處無用,在EditText將進一步討論

android:scrollHorizontally            //設置文本超出TextView的寬度的情況下,是否出現橫拉條

android:selectAllOnFocus              //如果文本是可選擇的,讓他獲取焦點而不是將光標移動為文本的開始位置或者末尾位置。TextView中設置後無效果

android:shadowColor                //指定文本陰影的顏色,需要與shadowRadius一起使用

android:shadowDx                   //設置陰影橫向坐標開始位置

android:shadowDy                   //設置陰影縱向坐標開始位置

android:shadowRadius                //設置陰影的半徑。設置為0.1就變成字體的顏色瞭,一般設置為3.0的效果比較好

android:singleLine                     //設置單行顯示。如果和layout_width一起使用,當文本不能全部顯示時,後面用“…”來表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"將隻顯示“t…”。如果不設置singleLine或者設置為false,文本將自動換行 android:text設置顯示文本. android:textAppearance設置文字外觀。如 “?android:attr/textAppearanceLargeInverse”這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用默認的外觀。可設置的值如下:textAppearanceButton/textAppearanceInverse /textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse

android:textColor                    //設置文本顏色

android:textColorHighlight           //被選中文字的底色,默認為藍色

android:textColorHint                //設置提示信息文字的顏色,默認為灰色。與hint一起使用。

android:textColorLink                //文字鏈接的顏色.

android:textScaleX                  //設置文字之間間隔,默認為$2。

android:textSize                      //設置文字大小,推薦度量單位”sp”,如”15sp”

android:textStyle                     //設置字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設置一個或多個,用“|”隔開

android:typeface                     //設置文本字體,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字體) 3]

android:height                       //設置文本區域的高度,支持度量單位:px(像素)/dp/sp/in/mm(毫米)

android:maxHeight                  //設置文本區域的最大高度

android:minHeight                   //設置文本區域的最小高度

android:width                        //設置文本區域的寬度,支持度量單位:px(像素)/dp/sp/in/mm(毫米),與layout_width 的區別看這裡

android:maxWidth                   //設置文本區域的最大寬度

android:minWidth                   //設置文本區域的最小寬度 android佈局屬性詳解 RelativeLayout用到的一些重要的屬性:第一類:屬性值為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      //如果對應的兄弟元素找不到的話就以父元素做參照物 第二類:屬性值必須為id的引用名“@id/id-name”

android:layout_below                    //在某元素的下方

android:layout_above                    //在某元素的的上方

android:layout_toLeftOf                  //在某元素的左邊

android:layout_toRightOf                //在某元素的右邊

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

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

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

android:layout_alignRight              //本元素的右邊緣和某元素的的右邊緣對齊 第三類:屬性值為具體的像素值,如30dip,40px

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

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

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

android:layout_marginTop              //離某元素上邊緣的距離 EditText的android:hint 設置EditText為空時輸入框內的提示信息 

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

以button為例,android:gravity="right"則button上面的文字靠右

android:layout_gravity android:layout_gravity是用來設置該view相對與起父view 的位置.

比如一個button 在linearlayout裡,你想把該button放在靠左、靠右等位置就可以通過該屬性設置.以button為例,android:layout_gravity="right"則button靠右 android:layout_alignParentRight 使當前控件的右端和父控件的右端對齊。這裡屬性值隻能為true或false,默認false。

android:scaleType: android:scaleType是控制圖片如何resized/moved來匹對ImageView的size。

ImageView.ScaleType / android:scaleType值的意義區別: CENTER /center 按圖片的原來size居中顯示,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示 CENTER_CROP / centerCrop 按比例擴大圖片的size居中顯示,使得圖片長(寬)等於或大於View的長(寬) CENTER_INSIDE / centerInside 將圖片的內容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬 FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,居中顯示 FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置 FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置 FIT_XY / fitXY 把圖片不按比例擴大/縮小到View的大小顯示 MATRIX / matrix 用矩陣來繪制,動態縮小放大圖片來顯示。 ** 要註意一點,Drawable文件夾裡面的圖片命名是不能大寫的

 

 

 

Edittext 的屬性 :    EditText繼承關系:View–>TextView–>EditText。EditText 的屬性很多,這裡介紹幾個:         

  android:layout_gravity="center_vertical"      //設置控件顯示的位置:默認top,這裡居中顯示,還有bottom       

 android:hint="請輸入數字!"                  //設置顯示在空間上的提示信息       

android:numeric="integer"                    //設置隻能輸入整數,如果是小數則是:decimal       

android:singleLine="true"                     //設置單行輸入,一旦設置為true,則文字不會自動換行。       

android:password="true"                     //設置隻能輸入密碼       

android:textColor = "#ff$200"                 //字體顏色       

 android:textStyle="bold"                      //字體,bold, italic, bolditalic       

android:textSize="20dip"                     //大小       

android:capitalize = "characters"              //以大寫字母寫       

android:textAlign="center"                    //EditText沒有這個屬性,但TextView有,居中       

 android:textColorHighlight="#cccccc"         //被選中文字的底色,默認為藍色       

 android:textColorHint="#ffff00"               //設置提示信息文字的顏色,默認為灰色       

android:textScaleX="1.5"                    //控制字與字之間的間距       

 android:typeface="monospace"              //字型,normal, sans, serif, monospace       

 android:background="@null"                 //空間背景,這裡沒有,指透明       

 android:layout_weight="1"                   //權重,控制控件之間的地位,在控制控件顯示的大小時蠻有用的。       

 android:textAppearance="?android:attr/textAppearanceLargeInverse"

 

1.EditText默認不彈出軟件鍵盤
   方法一:
          在 AndroidMainfest.xml中選擇哪個activity,設置windowSoftInputMode屬性為 adjustUnspecified|stateHidden
                   android:windowSoftInputMode="adjustUnspecified|stateHidden"
方法二:
         讓 EditText失去焦點,使用EditText的clearFocus方法
            edit.clearFocus();
 方法三:
         強制隱藏Android輸入法窗口
         例如:EditText edit=(EditText)findViewById(R.id.edit);
           InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
        2.EditText始終不彈出軟件鍵盤
        例:EditText edit=(EditText)findViewById(R.id.edit);
          edit.setInputType(InputType.TYPE_NULL);
 

Button 繼承自 VIEW , VIEW 有的屬性它都能用<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"> (這裡的樣式是當按鈕被按下時的顯示)

<shape>

<gradient

android:startColor="@drawable/gray"

android:endColor="@drawable/white"

android:angle="*"/>

<stroke

android:width="*dp"

android:color="@drawable/teal"/>

<corners

android:radius="*dp"/>

<padding

android:left="**dp"

android:top="*dp"

android:right="**dp"

android:bottom="*dp"/>

</shape>

</item>

 

<item android:state_focused="true">(這裡的樣式是移動到按鈕時的顯示)

<shape>

<gradient

android:startColor="@drawable/silver"

android:endColor="@drawable/springgreen"

android:angle="*"/>

<stroke

android:width="*dp"

android:color="@drawable/teal"/>

<corners

android:radius="*dp"/>

<padding

android:left="**dp"

android:top="*dp"

android:right="**dp"

android:bottom="*dp"/>

</shape>

</item>

 

<item> (這裡的樣式是按鈕正常時的顯示)

<shape>

<gradient

android:startColor="@drawable/silver"

android:endColor="@drawable/snow"

android:angle="*"/>

<stroke

android:width="*dp"

android:color="@drawable/teal"/>

<corners

android:radius="*dp"/>

<padding

android:left="**dp"

android:top="*dp"

android:right="**dp"

android:bottom="*dp"/>

</shape>

</item>

</selector>

註:

<padding

android:left="**dp"

android:top="*dp"

android:right="**dp"

android:bottom="*dp" />

這裡 left 和 right 控制的是 Button 上的字體與按鈕的左邊緣和右邊緣的距離,也就是控制按鈕是長還是短;這裡的 top 和 bottom 控制的是 Button 上的字體與按鈕的上邊緣和下邊緣的距離,也就是控制按鈕時高還是矮。

 

 

Shape 樣式圓滑效果:

<?xml version="1.0" encoding="UTF-8"?>

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

<solid android:color=""/>

<stroke android:width="*dp" android:color=" " />

<padding android:left="*dp" android:top="*dp"

android:right="*dp" android:bottom="*dp"/>

<corners android:radius="*dp"/>

</shape>

CheckBox

RadioGroup

Spinner

TimePicker

ScrollView

ProgressBar

RatingBar

ImageView

ImageButton      android:background="#00000000"     //設置背景圖空白的部分直接透視背景

ImageSwicher&Gallery

GradView

Tab

Menu

 

摘自 mixer_a

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *