????? 布局:??
??????在?android?中我們常用的布局方式有這么幾種:
??????1.LinearLayout (?線性布局?)?:(里面只可以有一個控件,并且不能設(shè)計這個控件的位置,控件會放到左上角)
??????線性布局分為水平線性和垂直線性二者的屬性分別為: 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?屬性來控制它的行而列的話里面有幾個控件就是幾列(一般情況)。
??????表示兩行兩列的一個表格。
??????android:gravity="center"?書面解釋是權(quán)重比。其時就是讓它居中顯示。它還可以動態(tài)添加里面的每行每列。如下代碼所示:
??????/*根據(jù)id查找表格對象*/
??????TableLayout tableLayout = (TableLayout) findViewById(R.id.table01);
??????/*創(chuàng)建列對象*/
??????TableRow tableRow =?new?TableRow(this);
??????/*文本框?qū)ο?/
??????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 android:id="@+id/f1"?android:layout_width="wrap_content"
??????android:layout_height="wrap_content"?android:src="@drawable/frog_right"
??????android:visibility="invisible">
???????
??????表示的是id為f1的控件疊加在id為iv1的控件上面顯示
??????(LinearLayout 和 RelativeLayout 應(yīng)該又是其中用的較多的兩種。AbsoluteLayout 比較少用,因為它是按屏幕的絕對位置來布局的如果屏幕大小發(fā)生改變的話控件的位置也發(fā)生了改變。這個就相當于HTML中的絕對布局一樣,一般不推薦使用 )??
??????注意事項:
??????1?、各布局不要亂用各自的屬性。比如把屬于?AbsoluteLayout?布局的android:layout_x和android:layout_y用到?LinearLayout?布局或?RelativeLayout?布局,或者把?RelativeLayout?布局的?below?,?rightof等屬性應(yīng)用到其他布局中。這樣做雖然不會報錯,但這是白浪費感情的工作,根本達不到我們需要的效果。
??????2?、關(guān)于android:layout_width="fill_parent"?和?android:layout_height="wrap_content"?,這是對每個布局寬和高的設(shè)置。?wrap_content?可表示隨著其中控件的不同而改變這個布局的寬度或高度,類似于自動設(shè)置寬和高,?fill_parent?使布局填充整個屏幕,另外還有一種?match_parent?,它本質(zhì)上和?fill_parent?一樣,并從?API? Level8?開始替代?fill_parent?。
??????TextView?的屬性?:
??????android:autoLink????????????? //設(shè)置是否當文本為URL鏈接/email/電話號碼/map時,文本顯示為可點擊的鏈接。可選值(none/web /email/phone/map/all)
??????android:autoText?????????????????? //如果設(shè)置,將自動執(zhí)行輸入值的拼寫糾正。此處無效果,在顯示輸入法并輸入的時候起作用
??????android:bufferType?????????????? //指定getText()方式取得的文本類別。選項editable 類似于StringBuilder可追加字符,也就是說getText后可調(diào)用append方法設(shè)置文本內(nèi)容。spannable 則可在給定的字符區(qū)域使用樣式
??????android:capitalize????????????????? //設(shè)置英文字母大寫類型。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明
??????android:cursorVisible????????????? //設(shè)定光標為顯示/隱藏,默認顯示
??????android:digits???????????????????? //設(shè)置允許輸入哪些字符。如“1234567890.+-*/% ()”
??????android:drawableBottom???????? //在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會把text的背景設(shè)為該顏色,并且同時和background使用時覆蓋后者
??????android:drawableLeft???????????? //在text的左邊輸出一個drawable,如圖片
??????android:drawablePadding???????? //設(shè)置text與drawable(圖片)的間隔,與drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可設(shè)置為負數(shù),單獨使用沒有效果
??????android:drawableRight??????????? //在text的右邊輸出一個drawable
??????android:drawableTop????????????? //在text的正上方輸出一個drawable
??????android:editable?????????????????? //設(shè)置是否可編輯
??????android:editorExtras????????????? //設(shè)置文本的額外的輸入數(shù)據(jù)
??????android:ellipsize??????????????? //設(shè)置當文字過長時,該控件該如何顯示。有如下值設(shè)置:”start”—?省略號顯示在開頭;”end” ——省略號顯示在結(jié)尾;”middle”—-省略號顯示在中間;”marquee” ——以跑馬燈的方式顯示(動畫橫向移動)
??????android:freezesText?????????????? //設(shè)置保存文本的內(nèi)容以及光標的位置
??????android:gravity??????????????????? //設(shè)置文本位置,如設(shè)置成“center”,文本將居中顯示
??????android:hintText???????????????? //為空時顯示的文字提示信息,可通過textColorHint設(shè)置提示信息的顏色。此屬性在 EditView中使用,但是這里也可以用
??????android:imeOptions??????????????? //附加功能,設(shè)置右下角IME動作與編輯框相關(guān)的動作,如actionDone右下角將顯示一個“完成”,而不設(shè)置默認是一個回車符號。這個在EditView中再詳細說明,此處無用
??????android:imeActionId???????????????? //設(shè)置IME動作ID
??????android:imeActionLabel????????????? //設(shè)置IME動作標簽
??????android:includeFontPadding???????? //設(shè)置文本是否包含頂部和底部額外空白,默認為true
??????android:inputMethod??????????????? //為文本指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這里報錯找不到
??????android:inputType??????????????????? //設(shè)置文本的類型,用于幫助輸入法顯示合適的鍵盤類型。在EditView中再詳細說明,這里無效果
??????android:linksClickable??????????????? //設(shè)置鏈接是否點擊連接,即使設(shè)置了autoLink
??????android:marqueeRepeatLimit??????? //在ellipsize指定marquee的情況下,設(shè)置重復(fù)滾動的次數(shù),當設(shè)置為 marquee_forever時表示無限次
??????android:ems???????????????????????? //設(shè)置TextView的寬度為N個字符的寬度。這里測試為一個漢字字符寬度
??????android:maxEms??????????????????? //設(shè)置TextView的寬度為最長為N個字符的寬度。與ems同時使用時覆蓋ems選項
??????android:maxLength???????????????? //限制顯示的文本長度,超出部分不顯示
??????android:lines??????????????????????? //設(shè)置文本的行數(shù),設(shè)置兩行就顯示兩行,即使第二行沒有數(shù)據(jù)
??????android:maxLines?????????????????? //設(shè)置文本的最大顯示行數(shù),與width或者layout_width結(jié)合使用,超出部分自動換行,超出行數(shù)將不顯示
??????android:minLines??????????????????? //設(shè)置文本的最小行數(shù),與lines類似
??????android:lineSpacingExtra??????????? //設(shè)置行間距
??????android:lineSpacingMultiplier??????? //設(shè)置行間距的倍數(shù)。如”$2
??????android:numeric???????????????????? //如果被設(shè)置,該TextView有一個數(shù)字輸入法。此處無用,設(shè)置后唯一效果是TextView有點擊效果,此屬性在EdtiView將詳細說明
??????android:password??????????????????? //以小點”.”顯示文本 android:phoneNumber設(shè)置為電話號碼的輸入方式
??????android:privateImeOptions????????? //設(shè)置輸入法選項,此處無用,在EditText將進一步討論
??????android:scrollHorizontally??????????? //設(shè)置文本超出TextView的寬度的情況下,是否出現(xiàn)橫拉條
??????android:selectAllOnFocus????????????? //如果文本是可選擇的,讓他獲取焦點而不是將光標移動為文本的開始位置或者末尾位置。TextView中設(shè)置后無效果
??????android:shadowColor??????????????? //指定文本陰影的顏色,需要與shadowRadius一起使用
??????android:shadowDx?????????????????? //設(shè)置陰影橫向坐標開始位置
??????android:shadowDy?????????????????? //設(shè)置陰影縱向坐標開始位置
??????android:shadowRadius??????????????? //設(shè)置陰影的半徑。設(shè)置為0.1就變成字體的顏色了,一般設(shè)置為3.0的效果比較好
??????android:singleLine???????????????????? //設(shè)置單行顯示。如果和layout_width一起使用,當文本不能全部顯示時,后面用“…”來表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"將只顯示“t…”。如果不設(shè)置singleLine或者設(shè)置為false,文本將自動換行 android:text設(shè)置顯示文本. android:textAppearance設(shè)置文字外觀。如 “?android:attr/textAppearanceLargeInverse”這里引用的是系統(tǒng)自帶的一個外觀,?表示系統(tǒng)是否有這種外觀,否 則使用默認的外觀??稍O(shè)置的值如下:textAppearanceButton/textAppearanceInverse /textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
??????android:textColor??????????????????? //設(shè)置文本顏色
??????android:textColorHighlight?????????? //被選中文字的底色,默認為藍色
??????android:textColorHint??????????????? //設(shè)置提示信息文字的顏色,默認為灰色。與hint一起使用。
??????android:textColorLink??????????????? //文字鏈接的顏色.
??????android:textScaleX????????????????? //設(shè)置文字之間間隔,默認為$2。
??????android:textSize????????????????????? //設(shè)置文字大小,推薦度量單位”sp”,如”15sp”
??????android:textStyle???????????????????? //設(shè)置字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設(shè)置一個或多個,用“|”隔開
??????android:typeface???????????????????? //設(shè)置文本字體,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字體) 3]
??????android:height?????????????????????? //設(shè)置文本區(qū)域的高度,支持度量單位:px(像素)/dp/sp/in/mm(毫米)
??????android:maxHeight????????????????? //設(shè)置文本區(qū)域的最大高度
??????android:minHeight?????????????????? //設(shè)置文本區(qū)域的最小高度
??????android:width??????????????????????? //設(shè)置文本區(qū)域的寬度,支持度量單位:px(像素)/dp/sp/in/mm(毫米),與layout_width 的區(qū)別看這里
??????android:maxWidth?????????????????? //設(shè)置文本區(qū)域的最大寬度
??????android:minWidth?????????????????? //設(shè)置文本區(qū)域的最小寬度 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????? //如果對應(yīng)的兄弟元素找不到的話就以父元素做參照物 第二類:屬性值必須為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 設(shè)置EditText為空時輸入框內(nèi)的提示信息
??????android:gravity???????????????????????? //屬性是對該view 內(nèi)容的限定.比如一個button 上面的text. 你可以設(shè)置該text 在view的靠左,靠右等位置.以button為例,android:gravity="right"則button上面的文字靠右 android:layout_gravity android:layout_gravity是用來設(shè)置該view相對與起父view 的位置.比如一個button 在linearlayout里,你想把該button放在靠左、靠右等位置就可以通過該屬性設(shè)置.以button為 例,android:layout_gravity="right"則button靠右 android:layout_alignParentRight 使當前控件的右端和父控件的右端對齊。這里屬性值只能為true或false,默認false。 android:scaleType: android:scaleType是控制圖片如何resized/moved來匹對ImageView的size。 ImageView.ScaleType / android:scaleType值的意義區(qū)別: CENTER /center 按圖片的原來size居中顯示,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示 CENTER_CROP / centerCrop 按比例擴大圖片的size居中顯示,使得圖片長(寬)等于或大于View的長(寬) CENTER_INSIDE / centerInside 將圖片的內(nèi)容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等于或小于View的長/寬 FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,居中顯示 FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置 FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置 FIT_XY / fitXY 把圖片不按比例擴大/縮小到View的大小顯示 MATRIX / matrix 用矩陣來繪制,動態(tài)縮小放大圖片來顯示。 ** 要注意一點,Drawable文件夾里面的圖片命名是不能大寫的
??????Edittext?的屬性?:????EditText繼承關(guān)系:View-->TextView-->EditText。?EditText?的屬性很多,這里介紹幾個: ?????????? android:layout_gravity="center_vertical"????? //設(shè)置控件顯示的位置:默認top,這里居中顯示,還有bottom ??????? android:hint="請輸入數(shù)字!"????????????????? //設(shè)置顯示在空間上的提示信息 ??????? android:numeric="integer"??????????????????? //設(shè)置只能輸入整數(shù),如果是小數(shù)則是:decimal ??????? android:singleLine="true"???????????????????? //設(shè)置單行輸入,一旦設(shè)置為true,則文字不會自動換行。 ??????? android:password="true"???????????????????? //設(shè)置只能輸入密碼 ??????? 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"?????????????? //設(shè)置提示信息文字的顏色,默認為灰色 ??????? android:textScaleX="1.5"??????????????????? //控制字與字之間的間距 ??????? android:typeface="monospace"????????????? //字型,normal, sans, serif, monospace ??????? android:background="@null"???????????????? //空間背景,這里沒有,指透明 ??????? android:layout_weight="1"?????????????????? //權(quán)重,控制控件之間的地位,在控制控件顯示的大小時蠻有用的。 ??????? android:textAppearance="?android:attr/textAppearanceLargeInverse"
??????1.EditText默認不彈出軟件鍵盤
??????方法一:
??????在 AndroidMainfest.xml中選擇哪個activity,設(shè)置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?有的屬性它都能用。