當前位置:首頁 » 安卓系統 » android控制項布局

android控制項布局

發布時間: 2023-10-06 12:03:12

① android設計界面時控制項有多種排列方法,其中常用布局方式有

在android中我們常用的布局方式有這么幾種:LinearLayout (線性布局),RelativeLayout (相對布局),TableLayout (表格布局),AbsoluteLayout (絕對布局),FrameLayout (幀布局)。LinearLayout 和 RelativeLayout 應該又是其中用的較多的兩種。AbsoluteLayout 比較少用(我自己還沒用過),因為它是按屏幕的絕對位置來布局的如果屏幕大小發生改變的話控制項的位置也發生了改變。這個就相當於HTML中的絕對布局一樣,一般不推薦使用。LinearLayout 顧名思義就是一條條的將控制項布置下去,線性布局分為水平線性和垂直線性二者的屬性分別為

android:orientation="horizontal" android:orientation="vertical" 。xmlns:android="http://schemas.android.com/apk/res/android" 很多人對這個感到困惑,其實它就是一個命名空間。RelativeLayout 相對布局。裡面的每個控制項之間的關系都是相對的。如果不設置相對關系的話默認擺放在屏幕左上角。重要屬性如下:

android:layout_toRightOf="@id/city" :與id為city的控制項的右邊對齊。

android:layout_alignTop="@id/city" : 與id為city的控制項的頂部對齊。

給出示意圖如下所示:

android:layout_width="fill_parent" android:layout_height="wrap_content" 我一般在線性布局裡面套相對布局,這時候需要注意上面兩個屬性相對布局的寬度可以設置為填充父控制項,但是高度一般不要設置為填充父控制項因為這樣的話我想在相對布局外面在放控制項就沒有效果了因為屏幕已經被相對布局全部占據。

不管是用什麼布局,寬度與高度這兩個屬性一定要弄清楚剛開始的時候我經常會發現有些控制項沒顯示在界面上或者占據了整個屏幕,一檢查原來是這里設置錯了。還有不要忘記這兩個屬性在一般控制項中都是不可或缺的,忘記設置的話就會報錯。

② android布局控制項之LinearLayout詳解

Android布局控制項之LinearLayout詳解

LinearLayout是線性布局控制項,它包含的子控制項將以橫向或豎向的方式排列,按照相對位置來排列所有的widgets或者其他的containers,超過邊界時,某些控制項將缺失或消失。因此一個垂直列表的每一行只會有一個widget或者是container,而不管他們有多寬,而一個水平列表將會只有一個行高(高度為最高子控制項的高度加上邊框高度)。LinearLayout保持其所包含的widget或者是container之間的間隔以及互相對齊(相對一個控制項的右對齊、中間對齊或者左對齊)。

xml屬性

android:baselineAligned:是否允許用戶調整它內容的基線。

android:baselineAlignedChildIndex:當一個線性布局與另一個布局是按基線對齊的一部分,它可以指定其內容的基線對齊方式。

android:gravity:指定如何在該對象中放置此對象的內容(x/y坐標值)。

android:orientation:設置它內容的對其方向(橫向/豎向)。

gravity 這個英文單詞是重心的意思,在這里就表示停靠位置的意思。

android:layout_gravity 和 android:gravity 的區別

從名字上可以看到,android:gravity是對元素本身說的,元素本身的文本顯示在什麼地方靠著換個屬性設置,不過不設置默認是在左側的。

android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什麼位置。

比如說button:android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示button上的字在button上的位置。

可選值

這兩個屬性可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

而且這些屬性是可以多選的,用「|」分開。

默認這個的值是:Gravity.LEFT

LinearLayout還支持為其包含的widget或者是container指定填充權值。好處就是允許其包含的widget或者是container可以填充屏幕上的剩餘空間。這也避免了在一個大屏幕中,一串widgets或者是containers擠成一堆的情況,而是允許他們放大填充空白。剩餘的空間會按這些widgets或者是containers指定的權值比例分配屏幕。默認的 weight 值為0,表示按照widgets或者是containers實際大小來顯示,若高於0的值,則將Container剩餘可用空間分割,分割大小具體取決於每一個widget或者是container的layout_weight及該權值在所有widgets或者是containers中的比例。例如,如果有三個文本框,其中兩個指定的權值為1,那麼,這兩個文本框將等比例地放大,並填滿剩餘的空間,而第三個文本框不會放大,按實際大小來顯示。如果前兩個文本框的取值一個為2,一個為1,顯示第三個文本框後剩餘的空間的2/3給權值為2的,1/3大小給權值為1的。也就是權值越大,重要度越大。

如果LinearLayout包含子LinearLayout,子LinearLayout之間的權值越大的,重要度則越小。如果有LinearLayout A包含LinearLayout C,D,C的權值為2,D的權值為1,則屏幕的2/3空間分給權值為1的D,1/3分給權值為2的C。在LinearLayout嵌套的情況下,子LinearLayout必須要設置權值,否則默認的情況是未設置權值的子LinearLayout占據整個屏幕

③ Android 新控制項之ConstraintLayout(約束布局)

ConstraintLayout (約束布局) 繼承於ViewGroup 允許開發者以靈活的方式定位和調整小部件的大小

ConstraintLayout 可讓開發者使用扁平視圖層次結構(無嵌套視圖組)創建復雜的大型布局。它與 RelativeLayout 相似,其中所有的視圖均根據同級視圖與父布局之間的關系進行布局,但其靈活性要高於 RelativeLayout ,並且更易於與 Android Studio 的布局編輯器配合使用。我理解為ConstraintLayout是一個更加靈活且減少嵌套的 RelativeLayout 的布局

ConstraintLayout作為支持庫提供,開發者可以在從 API 級別 9 (Gingerbread) 開始的 Android 系統上使用。

相信在面對一些復雜的UI頁面,咱們都是使用 RelativeLayout , LinearLayout 層層嵌套實現的.雖然能實現效果.但是層層嵌套層層解析載入View 無疑會耗費載入時間,耗費手機性能.這是時候ConstraintLayout(約束布局),就應運而生了,它出現的目的就是減少嵌套,優化層層嵌套狀況帶來的弊端

要在 ConstraintLayout 中定義某個視圖的位置, 您必須為該視圖添加至少一個水平約束條件和一個垂直約束條件 。每個約束條件均表示與其他視圖、父布局或隱形引導線之間連接或對齊方式。每個約束條件均定義了視圖在豎軸或者橫軸上的位置;因此每個視圖在每個軸上都必須至少有一個約束條件,但通常情況下會需要更多約束條件。

當您將視圖拖放到布局編輯器中時,即使沒有任何約束條件,它也會停留在您放置的位置。不過,這只是為了便於修改;當您在設備上運行布局時,如果視圖沒有任何約束條件,則會在位置 [0,0](左上角)處進行繪制。

在圖 1 中,布局在編輯器中看起來很完美,但視圖 C 上卻沒有垂直約束條件。在設備上繪制此布局時,雖然視圖 C 與視圖 A 的左右邊緣水平對齊,但由於沒有垂直約束條件,它會顯示在屏幕頂部

請注意,約束中不能有循環依賴。

相對定位是在 ConstraintLayout 中創建布局的基本構建塊之一。這些約束允許您相對於另一個小部件定位給定的小部件。您可以在水平和垂直軸上約束一個小部件:

如下圖,這告訴系統我們希望按鈕 B 的左側被約束到按鈕 A 的右側。這樣的位置約束意味著系統將嘗試讓兩側共享相同的位置。

這是可用約束的列表:

app:layout_constraintLeft(自身)_toLeftOf(相對於的控制項)="相對的控制項ID"

1.2 layout_constraintBaseline_toBaselineOf 基線對齊

如果設置了側邊距,它們將應用於相應的約束(如果存在)(圖 ),將邊距強制為目標端和源端之間的空間。通常的布局邊距屬性可用於此效果

2.1屬性:

請注意,邊距只能為正數或等於零,並且取Dimension.

2.2. 約束目標View.GONE的時候 的邊距

3.1 居中定位,就是把定位控制項的左邊對應目標的左邊 右邊對應目標的右邊,上邊對應目標的上邊

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"

如上圖,Button的左邊位於父布局的左邊,右邊位於父布局的右邊就做到了水平居中的效果

3.2 偏移 : 有時候居中展示還需要做出偏移效果

可以以一定角度和距離約束一個小部件中心相對於另一個小部件中心。這允許您將一個小部件定位在一個圓圈上

ConstraintLayout對標記為 的小部件進行了特定處理View.GONE。

GONE像往常一樣,小部件不會被顯示並且不是布局本身的一部分(即,如果標記為 ,它們的實際尺寸不會改變GONE)。
但就布局計算而言,GONE小部件仍然是其中的一部分,但有一個重要區別:

注意:
使用的邊距將是 B 在連接到 A 時定義的邊距(參見圖 7 示例)。在某些情況下,這可能不是您想要的邊距(例如,A 到其容器的一側有 100dp 的邊距,B 到 A 的邊距只有 16dp,將 A 標記為已消失,B 到容器的邊距為 16dp)。出於這個原因,您可以指定在連接到被標記為已消失的小部件時使用的備用邊距值(請參閱 上面有關已消失的邊距屬性的部分 )

1.1 您可以為自身定義最小和最大尺寸ConstraintLayout

1.2 控制項尺寸約束
android:layout_width可以通過 3 種不同方式設置和 android:layout_height屬性 來指定控制項的尺寸:

重要提示:
MATCH_PARENT不建議用於ConstraintLayout. 可以通過MATCH_CONSTRAINT將相應的左/右或上/下約束設置為來定義類似的行為"parent"。

WRAP_CONTENT (添加在 1 . 1中):強制約束
如果維度設置為WRAP_CONTENT,則在 1.1 之前的版本中,它們將被視為文字維度——也就是說,約束不會限制結果維度。雖然通常這已經足夠(並且更快),但在某些情況下,您可能希望使用WRAP_CONTENT,但繼續強制執行約束以限制結果維度。在這種情況下,您可以添加相應的屬性之一:

MATCH_CONSTRAINT維度(添加在 1 . 1中)
當維度設置為MATCH_CONSTRAINT時,默認行為是讓結果大小佔用所有可用空間。有幾個額外的修飾符可用:

layout_constraintWidth_min和layout_constraintHeight_min: 將設置此維度的最小尺寸
layout_constraintWidth_max和layout_constraintHeight_max: 將設置此維度的最大尺寸
layout_constraintWidth_percent和layout_constraintHeight_percent: 將此維度的大小設置為父維度的百分比

比率: 寬高比
您還可以將小部件的一個維度定義為另一個維度的比率。為此,您需要將至少一個約束維度設置為0dp(即MATCH_CONSTRAINT),並將屬性設置layout_constraintDimensionRatio為給定的比率。例如:

除此之外,在設置寬高比的值的時候,還可以在前面加W或H,分別指定寬度或高度限制。 例如:
app:layout_constraintDimensionRatio="H,2:3"指的是 高:寬=2:3
app:layout_constraintDimensionRatio="W,2:3"指的是 寬:高=2:3

...

Guildline的主要屬性:

Constraint 約束布局為了解決嵌套布局的弊端,更快的載入頁面而出現,但是約束布局需要整體架構頁面要有明確的構建頁面的思維,故而學習以及思維模式要有的.所以個人感覺是簡單頁面還是用相對布局,線性布局就夠了,對於復雜布局約束布局是你優化頁面載入的不二之選.
*寫作不容易,且贊且珍惜!!!*

④ Android 常見布局

Android六大基本布局分別是:線性布局LinearLayout、表格布局TableLayout、相對布局RelativeLayout、層布局FrameLayout、絕對布局AbsoluteLayout、網格布局GridLayout。其中,表格布局是線性布局的子類。網格布局是android 4.0後新增的布局。
在手機程序設計中,絕對布局基本上不用,用得相對較多的是線性布局和相對布局。

padding是站在父view的角度描述問題,它規定它裡面的內容必須與這個父view邊界的距離。margin則是站在自己的角度描述問題,規定自己和其他(上下左右)的view之間的距離,如果同一級只有一個view,那麼它的效果基本上就和padding一樣了。

顯示特點:所有子控制項按照橫向或者豎向依次排列

left(左)、right(右)、top(上)、bottom(下)、center(中心)、
enter_vertical(豎向中心)、center_horizontal(橫向中心)

left(左)、right(右)、top(上)、bottom(下)、center(中心)、
enter_vertical(豎向中心)、center_horizontal(橫向中心)

子控制項的用法:android:layout_weight="1" 多個控制項同時使用,可以實現平分的效果

顯示特點:和LinearLayout布局相似,所有子控制項默認顯示在RelativeLayout的左上角

layout_toRightOf 在指定控制項的右邊
layout_toLeftOf 在指定控制項的左邊
layout_above 在指定控制項的上邊
layout_below 在指定控制項的下邊子控制項對齊關系

layout_alignRight 與指定控制項右對齊
layout_alignLeft 與指定控制項左對齊
layout_alignTop 與指定控制項上對齊

layout_centerInParent 與父容器中間對齊 pairunte
layout_centerVertical 與父容器豎向中心對齊
layout_centerHorizontal 與父容器橫向中心對齊
layout_alignParentLeft 與父容器左邊對齊
layout_alignParentTop 與父容器上邊對齊
layout_alignParentRight 與父容器右邊對齊
layout_alignParentBottom 與父容器下邊對齊

顯示特點:所有子控制項默認在GridLayout中橫向依次排列,當只等每行的列數時,到達指定列數
會自動換行顯示。

layout_column 在網格的第幾列
layout_row 在網格的第幾行
layout_columnSpan 跨列
layout_rowSpan 跨行
layout_gravity 在一個網格中的重心位置
columnCount 每行列總數

顯示特點:所有的子控制項默認顯示在FrameLayout的左上角,會重疊在一起顯示。

layout_gravity(設置給子控制項,調整控制項在容器內的重心)
常用值:
left(左)、 right(右)、
top(上)、 bottom(下)、
center(中心)、 center_vertical(豎向中心)
center_horizontal(橫向中心)

表格布局和網格布局類似,但是需要注意的是,表格布局不能跨行,只能跨列

⑤ Android的五大布局

1.RelativeLayout  相對布局

2. LinearLayout 線性布局

3. FrameLayout 幀布局

4.TableLayout 表格布局 (被GridView代替)

5.AbsoluteLayoutf 絕對布局(已經被谷歌廢棄,幾乎不會用到)

           相對布局RelativeLayout允許子元素指定它們相對於其父元素或兄弟元素的位置,這是實際布局中最常用的布局方式之一。

            特點:相對於其他空間的位置,和相對父元素的位置進行布局;

layout_centerHorizontal(相當於父節點是水平居中)

layout_centerVertical(相當於父節點是垂直居中)

layout_centerInParent(相當於父節點在正中間)

layout_above(在XX之上)

layout_below(在XX之下)

layout_toLeft(在XX的左邊)

layout_toRight(在XX的右邊)

layout_alignParentTop(和父節點的頂部對齊)

layout_alignParentBottom(和父節點的底部對齊)

layout_alignParentLeft(和父節點的左邊對齊)

layout_alignParentRight(和父節點的右邊對齊)

layout_alignTop(和XXX頂部對齊)

layout_alignBottom(和XXX底部對齊)

layout_alignLeft (和XXX左邊對齊)

layout_alignRight(和XXX右邊對齊)

線性布局LinearLayout是根據指定朝向orientation水平Horizontal或者垂直Vertical方向排列的布局,其最大的特點是可以給子控制項按照權重weight屬性分配空間.

常見案例:計算器

3. FrameLayout 幀布局

            通俗的講就是在屏幕上一層覆蓋著一層的控制項,在fragment中比較常用

<TextView

android:layout_width= "200px"

android:layout_height= "200px"

android:layout_gravity= "center"

android:background= "#00ff00"

android:gravity= "center" />

⑥ android中常見的五種布局有什麼特點

1,FrameLayout,特點:所有的View都會放在左上角,並且後添加進去的View會覆蓋之前放進去的View。

2,LinearLayout,特點:在水平或者垂直方向上依次按照順序來排列子元素,控制項的排列順序遵循其在布局文件中被寫出的先後順序。

3,RelativeLayout,特點:以某一個子元素為參照物,其餘子元素均按照其相對位置來完成布局。

4,TableLayout,特點:每個TableLayout都是由一個或多個TableRow組成的,一個TableRow就代表TableLayout的一行。

5,AbsoluteLayout,表格布局類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素,設定他的對齊方式 android:gravity="" 。



(6)android控制項布局擴展閱讀

開放性:

在優勢方面,Android平台首先就是其開放性,開發的平台允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平台也將很快走向成熟。

開放性對於Android的發展而言,有利於積累人氣,這里的人氣包括消費者和廠商,而對於消費者來講,最大的受益正是豐富的軟體資源。開放的平台也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。

豐富的硬體:

這一點還是與Android平台的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色,卻不會影響到數據同步、甚至軟體的兼容,如同從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟體帶到iPhone上使用、聯系人等資料更是可以方便地轉移。

⑦ Android幾種layout(布局)的區別

Android幾種layout(布局)的區別

1.FrameLayout:children按照從左上開始的順序排列,主要用於tabed view或者圖片切換功能;最簡單的布局模型,在這種布局下每個添加的子控制項都被放在布局的左上角,並覆蓋在前一子控制項的上層。

2.線性布局(LinearLayout):children排列成一行多列或者一列多行的形式,應該是應用程序中最常用的布局方式,它提供了控制項水平或者垂直排列的模型,同時我們可通過設置子控制項的weight布局參數控制各個控制項在布局中的相對大小。

android:orientation="vertical"使linearlayout裡面的東西一行一行排列。

3.相對布局(RelativeLayout):children是相互之間相關位置或者和他們的parent位置相關,參照控制項可以是父控制項,也可以是其他子控制項,但被參照的控制項必須要在參照它的控制項之前定義。相對布局模型所涉及的屬性設置比較多,但並不復雜。

4.TableLayout:children按照行列的排序,類似於html的table;模型以行列的形式管理子控制項,每一行為一個TableRow的對象,也可為一個View的對象。TableRow可添加子控制項,每添加一個子控制項為一列。

5.坐標布局(AbsoluteLayout)的子控制項需要指定相對於此坐標布局的橫、縱坐標值,否則將會像FrameLayout那樣被排在左上角。手機應用需要適用於不同的屏幕大小,而這種布局模型不能自適應屏幕尺寸大小,所以應用得相當少。

熱點內容
愛比較伺服器怎麼開 發布:2024-05-21 22:00:42 瀏覽:667
java代碼格式 發布:2024-05-21 21:56:09 瀏覽:35
吃奶演算法 發布:2024-05-21 21:51:07 瀏覽:142
壓縮機熱泵 發布:2024-05-21 21:51:04 瀏覽:925
安卓網頁源碼在哪裡 發布:2024-05-21 21:46:56 瀏覽:894
vbnet取網頁源碼 發布:2024-05-21 21:46:51 瀏覽:650
pythonospathwalk 發布:2024-05-21 21:46:42 瀏覽:552
網易我的世界伺服器會不會很卡 發布:2024-05-21 21:46:03 瀏覽:55
電動汽車曾程器如何配置 發布:2024-05-21 21:45:52 瀏覽:609
伺服器由什麼控制 發布:2024-05-21 21:29:00 瀏覽:483