天天看點

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>

</TableRow>

                                                               <EditText></EditText>

</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              //本元素的右邊緣和某元素的的右邊緣對齊 第三類屬性值為具體的像素值如30dip40px

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);

<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">這裡的樣式是移動到按鈕時的顯示

android:startColor="@drawable/silver"

android:endColor="@drawable/springgreen"

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

android:endColor="@drawable/snow"

</selector>

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"/>

CheckBox

RadioGroup

Spinner

TimePicker

ScrollView

ProgressBar

RatingBar

ImageView

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

ImageSwicher&Gallery

GradView

Tab

Menu

繼續閱讀