Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 開發零起步學習筆記(九):android 控制控件的位置和大小及Layout相關屬性

android 開發零起步學習筆記(九):android 控制控件的位置和大小及Layout相關屬性

編輯:關於Android編程

方法一:

Android/" target="_blank">Android的界面布局可以用兩種方法,一種是在xml中布局,一種是和JAVA中Swing一樣在JAVA代碼中實現Ui界面的布局,用xml的布局管理器布局是很方便的,但是在一些代碼中需要動態的顯示界面,這個時候xml就缺少了一種靈活性,使用XML和JAVA代碼中布局可以解決這樣的問題。在此只對JAVA代碼中的LoyoutParams方法進行理解及使用。

LoyoutParams類中主要保存的是布局參數,元素或組件可以通過這個類實現對布局參數的設置。在xml中它對應的是元素的”空間位置“、“大小”、“子元素在體內的空間位置”、“在父元素的填充方式”等屬性。在xml隊形的屬性有

(“

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center"

”);

通過引用的代碼說明LayoutParams在布局中的作用:

1、

 

  LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT ); //調用addView()方法增加一個TextView到線性布局中 mLayout.addView(textView, p);

 

 

2、

 

  FrameLayout framelayout = new FrameLayout(this); text=new TextView(this);// Layoutparames params = new LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT , ViewGroup.LayoutParams.WRAP_CONTENT //創建保存布局參數的對象 ); params.gravity = Gravity.CENTER_HORIZONTAN|Gravity.CENTER_VERTICAL;//設置居中顯示 text.setLayoutParams(params);//設置布局參數 framelayout.addView(text);//將元素添加到布局管理器中

 

 

 

方法二

在xml中 改控件參數:

 

以下大部為用在RelativeLayout中的一些參數:

android:layout_above將該控件的底部至於給定ID的控件之上,但不會左對齊,默認置於父窗口最左邊,會覆蓋最左邊的控件

android:layout_below將該控件的頂部至於給定ID的控件之下,但不會左對齊,默認置於父窗口最左邊,會覆蓋最左邊的控件

android:layout_toLeftOf將該控件的右邊緣和給定ID的控件的左邊緣對齊,默認置於父窗口最上面,會覆蓋最上面的控件

android:layout_toRightOf將該控件的左邊緣和給定ID的控件的右邊緣對齊,默認置於父窗口最上面,會覆蓋最上面的控件

\

 

android:alignParentBottom如果該值為true,則將該控件的底部和父控件的底部對齊,默認置於父窗口最左下,會覆蓋最左下的控件
android:layout_alignParentLeft如果該值為true,則將該控件的左邊與父控件的左邊對齊,默認置於父窗口最左上,會覆蓋最左上的控件
android:layout_alignParentRight如果該值為true,則將該控件的右邊與父控件的右邊對齊,默認置於父窗口最右上,會覆蓋最右上的控件
android:layout_alignParentTop如果該值為true,則將控件的頂部與父控件的頂部對齊,默認置於父窗口最左上,會覆蓋最左上的控件

 

android:id—— 為控件指定相應的ID
android:text —— 指定控件當中顯示的文字,需要注意的是,這裡盡量使用strings.xml文件當中的字符串
android:textSize —— 指定控件當中字體的大小
android:background —— 指定該控件所使用的背景色,RGB命名法
android:sigleLine —— 如果設置為真的話,則將控件的內容在同一行當中進行顯示


android:gravity ——指定控件的基本位置,比如說居中,居右等位置

 

android:layout_width="fill_parent"—— 剩余空間有多大就填充多大,如要再加別的控件,則空間沒了,不會顯示出來,每個控件都不能少這個
android:layout_height ="wrap_content"—— 內容多大就多大,如果不停寫內容,會不斷變大,最終導致別的控件不能顯示,每個控件都不能少這個

上面2個也可設固定值,如android:layout_width="200px"

android:width—— 指定控件的寬度
android:height—— 指定控件的高度

當layout_width或layout_height的值為:1、固定值 2、fill_parent時;width 和 height 的值無論設什麼都不起作用。此時控件大小以layout_width和layout_height為准。

當layout_width或layout_height的值為:1、wrap_content時;此時控件大小以width和height為准。

android:padding*—— 指定控件的內邊距,也就是說控件當中的內容,下圖指EditText和主窗口的間距為50px

android:layout_alignBaseline該控件的baseline和給定ID的控件的baseline對齊,並置於父窗口最左邊,會覆蓋最左邊的控件
android:layout_alignBottom將該控件的底部邊緣與給定ID控件的底部邊緣對齊,並置於父窗口最左邊,會覆蓋最左邊的控件
android:layout_alignLeft將該控件的左邊緣與給定ID控件的左邊緣對齊,並置於父窗口最上邊,會覆蓋最上邊的控件
android:layout_alignRight將該控件的右邊緣與給定ID控件的右邊緣對齊,並置於父窗口最上邊,會覆蓋最上邊的控件
android:layout_alignTop將給定控件的頂部邊緣與給定ID控件的頂部對齊,並置於父窗口最左邊,會覆蓋最左邊的控件

 

android:layout_centerHorizontal如果值為真,該控件將被至於水平方向的中央
android:layout_centerInParent如果值為真,該控件將被至於父控件水平方向和垂直方向的中央
android:layout_centerVertical如果值為真,該控件將被至於垂直方向的中央

 

android:layout_weight=""權重,如下,垂直線性布局中兩個水平線性布局,權重分別為1、3,每個水平線性布局裡面的值代表該textview在該水平布局裡的權重。

但權重所顯示的寬度不一定是固定值,當textview裡的內容大於權重所占寬度時,還是會變化的。

 

Android控制字體大小和字體顏色:

style="?android:attr/textAppearanceMedium"
style="?android:attr/textAppearanceSmall"

 

其它一些參數:

android:excludeFromRecents="true"為true表示長按home鍵將顯示此應用

android:screenOrientation="portrait"永遠豎屏顯示

android:screenOrientation="portrait"永遠橫屏顯示

android:configChanges="keyboardHidden|orientation"豎屏切換橫屏時應用也能彈出界面


分隔符

橫向:

android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="?android:attr/listPider" />

縱向:
android:layout_height="fill_parent"
android:background="?android:attr/listPider" />

CheckBox
style="?android:attr/starStyle"

//類似標題欄效果的TextView
style="?android:attr/listSeparatorTextViewStyle"

//其它有用的樣式
android:layout_height="?android:attr/listPreferredItemHeight"

android:paddingRight="?android:attr/scrollbarSize"

style="?android:attr/windowTitleBackgroundStyle"

style="?android:attr/windowTitleStyle"

android:layout_height="?android:attr/windowTitleSize"

android:background="?android:attr/windowBackground"

在drawable-mdpi文件夾下定義button_selector.xml



android:drawable="@drawable/start_down"
/>

android:drawable="@drawable/start"
/>

在Layout中的main.xml

android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_selector" />

EditText 和 TextView 參數

 

 

  android:inputType

 

  指定輸入法的類型,int類型,可以用|選擇多個。取值可以參考:android.text.InputType類。取值包括:text, textUri, phone,number,等。

 

  android:imeOptions

 

  指定輸入法窗口中的回車鍵的功能,可選值為normal, actionNext,actionDone,actionSearch等。部分輸入法對此的支持可能不夠好。

android:imeOptions="actionNext"
android:nextFocusDown="@+id/minute"

上兩條加一起才能跳轉到minute。

android 滾動條 相關屬性

 

屬性名稱

描述

android:background

設置背景色/背景圖片。可以通過以下兩種方法設置背景為透明:”@android:color/transparent”和”@null”。注意TextView默認是透明的,不用寫此屬性,但是Buttom/ImageButton/ImageView想透明的話就得寫這個屬性了。

android:clickable

是否響應點擊事件。

android:contentDescription

設置View的備注說明,作為一種輔助功能提供,為一些沒有文字描述的View提供說明,如ImageButton。這裡在界面上不會有效果,自己在程序中控制,可臨時放一點字符串數據。

android:drawingCacheQuality

設置繪圖時半透明質量。有以下值可設置:auto(默認,由框架決定)/high(高質量,使用較高的顏色深度,消耗更多的內存)/low(低質量,使用較低的顏色深度,但是用更少的內存)。

android:duplicateParentState

如果設置此屬性,將直接從父容器中獲取繪圖狀態(光標,按下等)。見下面代碼部分,注意根據目前測試情況僅僅是獲取繪圖狀態,而沒有獲取事件,也就是你點一下LinearLayout時Button有被點擊的效果,但是不執行點擊事件。

android:fadingEdge

設置拉滾動條時,邊框漸變的放向。none(邊框顏色不變),horizontal(水平方向顏色變淡),vertical(垂直方向顏色變淡)。參照fadingEdgeLength的效果圖

android:fadingEdgeLength

設置邊框漸變的長度。

android:fitsSystemWindows

設置布局調整時是否考慮系統窗口(如狀態欄)

android:focusable

設置是否獲得焦點。若有requestFocus()被調用時,後者優先處理。注意在表單中想設置某一個如EditText獲取焦點,光設置這個是不行的,需要將這個EditText前面的focusable都設置為false才行。在Touch模式下獲取焦點需要設置focusableInTouchMode為true。

android:focusableInTouchMode

設置在Touch模式下View是否能取得焦點。

android:hapticFeedbackEnabled

設置長按時是否接受其他觸摸反饋事件。這裡模擬器沒有試出效果,難道是多點觸摸?找不到資料可以找找performHapticFeedback或HapticFeedback這個關鍵字的資料看看。

android:id

給當前View設置一個在當前layout.xml中的唯一編號,可以通過調用View.findViewById()或Activity.findViewById()根據這個編號查找到對應的View。不同的layout.xml之間定義相同的id不會沖突。格式如”@+id/btnName”

android:isScrollContainer

設置當前View為滾動容器。這裡沒有測試出效果來,ListView/GridView/ScrollView根本就不用設置這個屬性,而EdidText設置android:scrollbars也能出滾動條。

android:keepScreenOn

View在可見的情況下是否保持喚醒狀態。

常在LinearLayout使用該屬性,但是模擬器這裡沒有效果。

android:longClickable

設置是否響應長按事件.

android:minHeight

設置視圖最小高度

android:minWidth

設置視圖最小寬度度

android:nextFocusDown

設置下方指定視圖獲得下一個焦點。焦點移動是基於一個在給定方向查找最近鄰居的算法。如果指定視圖不存在,移動焦點時將報運行時錯誤。可以設置imeOptions=actionDone,這樣輸入完即跳到下一個焦點。

android:nextFocusLeft

設置左邊指定視圖獲得下一個焦點。

android:nextFocusRight

設置右邊指定視圖獲得下一個焦點。

android:nextFocusUp

設置上方指定視圖獲得下一個焦點。

android:onClick

點擊時從上下文中調用指定的方法。這裡指定一個方法名稱,一般在Activity定義符合如下參數和返回值的函數並將方法名字符串指定為該值即可:

publicvoidonClickButton(Viewview)

android:onClick=”onClickButton”

android:padding

設置上下左右的邊距,以像素為單位填充空白。

android:paddingBottom

設置底部的邊距,以像素為單位填充空白。

android:paddingLeft

設置左邊的邊距,以像素為單位填充空白。

android:paddingRight

設置右邊的邊距,以像素為單位填充空白。.

android:paddingTop

設置上方的邊距,以像素為單位填充空白。

android:saveEnabled

設置是否在窗口凍結時(如旋轉屏幕)保存View的數據,默認為true,但是前提是你需要設置id才能自動保存,參見這裡。

android:scrollX

以像素為單位設置水平方向滾動的的偏移值,在GridView中可看的這個效果。

android:scrollY

以像素為單位設置垂直方向滾動的的偏移值

android:scrollbarAlwaysDrawHorizontalTrack

設置是否始終顯示水平滾動條。這裡用ScrollView、ListView測試均沒有效果。

android:scrollbarAlwaysDrawVerticalTrack

設置是否始終顯示垂直滾動條。這裡用ScrollView、ListView測試均沒有效果。

android:scrollbarDefaultDelayBeforeFade

設置N毫秒後開始淡化,以毫秒為單位。

android:scrollbarFadeDuration

設置滾動條淡出效果(從有到慢慢的變淡直至消失)時間,以毫秒為單位。Android2.2中滾動條滾動完之後會消失,再滾動又會出來,在1.5、1.6版本裡面會一直顯示著。

android:scrollbarSize

設置滾動條的寬度。

android:scrollbarStyle

設置滾動條的風格和位置。設置值:insideOverlay、insideInset、outsideOverlay、outsideInset。這裡沒有試出太多效果,以下依次是outsideOverlay與outsideInset效果截圖比較:

android:scrollbarThumbHorizontal

設置水平滾動條的drawable(如顏色)。

android:scrollbarThumbVertical

設置垂直滾動條的drawable(如顏色).

android:scrollbarTrackHorizontal

設置水平滾動條背景(軌跡)的色drawable(如顏色)

android:scrollbarTrackVertical

設置垂直滾動條背景(軌跡)的drawable注意直接設置顏色值如”android:color/white”將得出很難看的效果,甚至都不理解這個屬性了,這裡可以參見ApiDemos裡res/drawable/scrollbar_vertical_thumb.xml和scrollbar_vertical_track.xml,設置代碼為:android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"

android:scrollbars

設置滾動條顯示。none(隱藏),horizontal(水平),vertical(垂直)。見下列代碼演示使用該屬性讓EditText內有滾動條。但是其他容器如LinearLayout設置了但是沒有效果。

android:soundEffectsEnabled

設置點擊或觸摸時是否有聲音效果

android:tag

設置一個文本標簽。可以通過View.getTag()或forwithView.findViewWithTag()檢索含有該標簽字符串的View。但一般最好通過ID來查詢View,因為它的速度更快,並且允許編譯時類型檢查。

android:visibility

設置是否顯示View。設置值:visible(默認值

 

屬性名稱

描述

android:background

設置背景色/背景圖片。可以通過以下兩種方法設置背景為透明:”@android:color/transparent”和”@null”。注意TextView默認是透明的,不用寫此屬性,但是Buttom/ImageButton/ImageView想透明的話就得寫這個屬性了。

android:clickable

是否響應點擊事件。

android:contentDescription

設置View的備注說明,作為一種輔助功能提供,為一些沒有文字描述的View提供說明,如ImageButton。這裡在界面上不會有效果,自己在程序中控制,可臨時放一點字符串數據。

android:drawingCacheQuality

設置繪圖時半透明質量。有以下值可設置:auto(默認,由框架決定)/high(高質量,使用較高的顏色深度,消耗更多的內存)/low(低質量,使用較低的顏色深度,但是用更少的內存)。

android:duplicateParentState

如果設置此屬性,將直接從父容器中獲取繪圖狀態(光標,按下等)。見下面代碼部分,注意根據目前測試情況僅僅是獲取繪圖狀態,而沒有獲取事件,也就是你點一下LinearLayout時Button有被點擊的效果,但是不執行點擊事件。

android:fadingEdge

設置拉滾動條時,邊框漸變的放向。none(邊框顏色不變),horizontal(水平方向顏色變淡),vertical(垂直方向顏色變淡)。參照fadingEdgeLength的效果圖

android:fadingEdgeLength

設置邊框漸變的長度。

android:fitsSystemWindows

設置布局調整時是否考慮系統窗口(如狀態欄)

android:focusable

設置是否獲得焦點。若有requestFocus()被調用時,後者優先處理。注意在表單中想設置某一個如EditText獲取焦點,光設置這個是不行的,需要將這個EditText前面的focusable都設置為false才行。在Touch模式下獲取焦點需要設置focusableInTouchMode為true。

android:focusableInTouchMode

設置在Touch模式下View是否能取得焦點。

android:hapticFeedbackEnabled

設置長按時是否接受其他觸摸反饋事件。這裡模擬器沒有試出效果,難道是多點觸摸?找不到資料可以找找performHapticFeedback或HapticFeedback這個關鍵字的資料看看。

android:id

給當前View設置一個在當前layout.xml中的唯一編號,可以通過調用View.findViewById()或Activity.findViewById()根據這個編號查找到對應的View。不同的layout.xml之間定義相同的id不會沖突。格式如”@+id/btnName”

android:isScrollContainer

設置當前View為滾動容器。這裡沒有測試出效果來,ListView/GridView/ScrollView根本就不用設置這個屬性,而EdidText設置android:scrollbars也能出滾動條。

android:keepScreenOn

View在可見的情況下是否保持喚醒狀態。

常在LinearLayout使用該屬性,但是模擬器這裡沒有效果。

android:longClickable

設置是否響應長按事件.

android:minHeight

設置視圖最小高度

android:minWidth

設置視圖最小寬度度

android:nextFocusDown

設置下方指定視圖獲得下一個焦點。焦點移動是基於一個在給定方向查找最近鄰居的算法。如果指定視圖不存在,移動焦點時將報運行時錯誤。可以設置imeOptions=actionDone,這樣輸入完即跳到下一個焦點。

android:nextFocusLeft

設置左邊指定視圖獲得下一個焦點。

android:nextFocusRight

設置右邊指定視圖獲得下一個焦點。

android:nextFocusUp

設置上方指定視圖獲得下一個焦點。

android:onClick

點擊時從上下文中調用指定的方法。這裡指定一個方法名稱,一般在Activity定義符合如下參數和返回值的函數並將方法名字符串指定為該值即可:

publicvoidonClickButton(Viewview)

android:onClick=”onClickButton”

android:padding

設置上下左右的邊距,以像素為單位填充空白。

android:paddingBottom

設置底部的邊距,以像素為單位填充空白。

android:paddingLeft

設置左邊的邊距,以像素為單位填充空白。

android:paddingRight

設置右邊的邊距,以像素為單位填充空白。.

android:paddingTop

設置上方的邊距,以像素為單位填充空白。

android:saveEnabled

設置是否在窗口凍結時(如旋轉屏幕)保存View的數據,默認為true,但是前提是你需要設置id才能自動保存,參見這裡。

android:scrollX

以像素為單位設置水平方向滾動的的偏移值,在GridView中可看的這個效果。

android:scrollY

以像素為單位設置垂直方向滾動的的偏移值

android:scrollbarAlwaysDrawHorizontalTrack

設置是否始終顯示水平滾動條。這裡用ScrollView、ListView測試均沒有效果。

android:scrollbarAlwaysDrawVerticalTrack

設置是否始終顯示垂直滾動條。這裡用ScrollView、ListView測試均沒有效果。

android:scrollbarDefaultDelayBeforeFade

設置N毫秒後開始淡化,以毫秒為單位。

android:scrollbarFadeDuration

設置滾動條淡出效果(從有到慢慢的變淡直至消失)時間,以毫秒為單位。Android2.2中滾動條滾動完之後會消失,再滾動又會出來,在1.5、1.6版本裡面會一直顯示著。

android:scrollbarSize

設置滾動條的寬度。

android:scrollbarStyle

設置滾動條的風格和位置。設置值:insideOverlay、insideInset、outsideOverlay、outsideInset。這裡沒有試出太多效果,以下依次是outsideOverlay與outsideInset效果截圖比較:

android:scrollbarThumbHorizontal

設置水平滾動條的drawable(如顏色)。

android:scrollbarThumbVertical

設置垂直滾動條的drawable(如顏色).

android:scrollbarTrackHorizontal

設置水平滾動條背景(軌跡)的色drawable(如顏色)

android:scrollbarTrackVertical

設置垂直滾動條背景(軌跡)的drawable注意直接設置顏色值如”android:color/white”將得出很難看的效果,甚至都不理解這個屬性了,這裡可以參見ApiDemos裡res/drawable/scrollbar_vertical_thumb.xml和scrollbar_vertical_track.xml,設置代碼為:android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"

android:scrollbars

設置滾動條顯示。none(隱藏),horizontal(水平),vertical(垂直)。見下列代碼演示使用該屬性讓EditText內有滾動條。但是其他容器如LinearLayout設置了但是沒有效果。

android:soundEffectsEnabled

設置點擊或觸摸時是否有聲音效果

android:tag

設置一個文本標簽。可以通過View.getTag()或forwithView.findViewWithTag()檢索含有該標簽字符串的View。但一般最好通過ID來查詢View,因為它的速度更快,並且允許編譯時類型檢查。

android:visibility

設置是否顯示View。設置值:visible(默認值

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved