LinearLayout線性布局搭配權重屬性的使用

2022-10-11 05:57:06 字數 3914 閱讀 1017

在開發中,我們是通過布局來完成應用介面的搭配的,通過各種布局,我們可以完成各種複雜的介面設計。而linearlayout也就是我們說的線性布局,這個比較簡單而且使用很廣泛的一種布局。下面我們通過乙個demo來對這個布局進行學習。我們先來看看效果圖吧。

然後在來看看布局檔案main_layout.xml

<

linearlayout

xmlns:android

=""xmlns:tools

=""android:layout_width

="match_parent"

android:layout_height

="match_parent"

android:orientation

="vertical"

tools:context

="com.example.linerlayoutdemo.mainactivity"

>

<

linearlayout

android:layout_width

="match_parent"

android:layout_height

="match_parent"

android:layout_weight

="1"

android:orientation

="vertical"

>

<

textview

android:layout_width

="match_parent"

android:layout_height

="0dp"

android:layout_weight

="1"

android:background

="#120ff0"

/>

<

textview

android:layout_width

="match_parent"

android:layout_height

="0dp"

android:layout_weight

="1"

android:background

="#950ff0"

/>

<

textview

android:layout_width

="match_parent"

android:layout_height

="0dp"

android:layout_weight

="1"

android:background

="@android:color/darker_gray"

/>

<

textview

android:layout_width

="match_parent"

android:layout_height

="0dp"

android:layout_weight

="1"

android:background

="#000ff0"

/>

linearlayout

>

<

linearlayout

android:layout_width

="match_parent"

android:layout_height

="match_parent"

android:layout_weight

="1"

android:orientation

="horizontal"

>

<

textview

android:layout_width

="0dp"

android:layout_height

="match_parent"

android:layout_weight

="1"

android:background

="#079ff0"

/>

<

textview

android:layout_width

="0dp"

android:layout_height

="match_parent"

android:layout_weight

="1"

android:background

="#000fca"

/>

<

textview

android:layout_width

="0dp"

android:layout_height

="match_parent"

android:layout_weight

="1"

android:background

="#000f65"

/>

<

textview

android:layout_width

="0dp"

android:layout_height

="match_parent"

android:layout_weight

="1"

android:background

="@android:color/holo_blue_bright"

/>

linearlayout

>

linearlayout

>

這裡我們首先說一下linearlayout,線性布局有兩個方向,水平和垂直方向。分別是通過android:orientation="horizontal"和android:orientation="vertical"來控制的。這裡說乙個記憶的小技巧。因為小編英文不太好。經常忘記那個是水平那個是垂直。所以我就記住horizontal是h開頭的。這個是水平方向,那麼水平就是橫向嘛!hen,h開頭。這樣就不會記錯了。

從這個demo的效果圖我們可以很清楚的看出,demo在乙個垂直方向的線性布局裡面分別巢狀了兩個線性布局。上面乙個是horizontal方向,下面乙個是vertical方向。

說完布局我們順便說一說這個demo的知識點。**注釋我們有說,這個demo主要兩個知識點,乙個是布局巢狀,乙個是權重分配。這裡們說一說權重。

權重,也就是對控制項設定 android:layout_weight的屬性。這個屬性的意思是分配剩餘空間。注意,是剩餘空間,所以,我們一般將控制項的寬度或者高度設定為0dp(至於是寬度還是高度就是看布局是水平還是垂直了)。這裡我先說簡單的。

比如有倆個控制項,分別設定為android:layout_weight=「1」,android:layout_weight=「2」,表示控制項分別佔螢幕的1/3和2/3,。不過這是有乙個前提的,就是建立在控制項的寬度或者高度設定為0dp的情況下。

然後我們說一下複雜的。其實也不複雜。權重是分配剩餘空間的意思就是說,權重屬性他是對螢幕剩下的空間進行分配。這就是為什麼上面我們說要將控制項的寬度或者高度設定為0dp的原因。假如說,控制項設定了寬度或者高度,那麼權重分配的公式如下:

控制項1的寬度或者高度=定義的寬度或者高度+1/3(螢幕寬度或者高度-兩個控制項的寬度或者高度之和)

控制項2的寬度或者高度=定義的寬度或者高度+2/3(螢幕寬度或者高度-兩個控制項的寬度或者高度之和)。

通過公式我們應該就明白了權重分配剩餘空間的原理了吧。

這裡我們要注意一點,假如你是在horizontal的線性布局裡面分配權重,那麼,高度不能設定為0dp。理解很簡單,水平方向的寬度因為你設定了權重,所以寬度由權重來分配。所以寬度設定為0dp系統不會報錯。但是高度沒人給他分配呀。。所以高度不能設定為0dp。在vertical布局中就反之。

線性布局LinearLayout的使用

linearlayout布局是android中常用的布局方式,是乙個viewgroup以線性方向顯示其子view元素。xmlns android xmlns tools android layout width match parent android layout height match par...

LinearLayout控制項

linearlayout是線性布局控制項,它包含的子控制項將以橫向或豎向的方式排列,按照相對位置來排列所有的widgets或者其他的containers,超過邊界時,某些控制項將缺失或消失。因此乙個垂直列表的每一行只會有乙個widget或者是container,而不管他們有多寬,而乙個水平列表將會只...

LinearLayout增加divider分割線

在android3.0及後面的版本在linearlayout裡增加了個分割線 android divider drawable shape android showdividers middle beginning end 分割線如果是那就直接使用就行,如果要使用顏色就必須使用shape來顯示,直接...