Android介面基本屬性

查志強發表於2014-07-13

【原文:http://www.cnblogs.com/awenhome/archive/2011/12/29/2305813.html

佈局:  

  在 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> 

表示的是idf1的控制元件疊加在idiv1的控制元件上面顯示

 

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

          注意事項:

1 、各佈局不要亂用各自的屬性。比如把屬於 AbsoluteLayout 佈局的android:layout_xandroid: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


相關文章