第23課:Android - LinearLayout布局講解

2021-12-29 網際網路老黑

文/老黑

這節課開始,我們要講解一下Android的幾種頁面布局,通過頁面布局的學習,大家可以做出任意變化的頁面,而只要充分掌握了這點,基本上可以算Android入門了,同時會對自己的信心有一個顯著的提高。

上節課我們學習了幾個主要的Android控制項,而怎樣讓控制項有條不紊地擺放在頁面上,這就是布局要幹的事情了。當然,布局的內部除了放置控制項外,也可以嵌套布局,通過多層布局的嵌套,我們可以完成一些比較複雜的頁面,如圖:



好了,大概清楚布局是怎麼一回事就行了,接下來我們來看今天需要掌握的第一個布局,也是正式項目中最常用的布局—— LinearLayout。

LinearLayout又稱作線性布局,其實細心的朋友會發現,我前面寫的一些例子,基本上都是用LinearLayout布局實現的,這個布局正如名字所述,它會把其包含的控制項在線性上依次排列,可以是豎排,也可以是橫排,都可自行控制,但注意是依次,即按順序。

我們通過android:orientation屬性指定了排列方向:vertical表示讓包含的控制項豎排,horizontal表示讓包含的控制項橫排,下面我們通過實戰來體會一下,如圖:

布局豎排效果:



布局橫排效果:



這兩個例子非常簡單,只要注意android:orientation這個屬性的設置即可。

下面再來分析一個稍微複雜的頁面,LinearLayout中又嵌套了一個LinearLayout子布局,如圖:



最外面的LinearLayout設成了垂直布局,所以頁面是從上至下排列的,而嵌套的LinearLayout子布局保證了裡面包含的EditText和Button是橫排擺放的。

另外通過這個頁面,我們還發現了一個非常有用的屬性,即android:Layout_weight,這裡設置成了1,表示1:1,平分屏幕寬度。其原理也很簡單,系統會先把LinearLayout下所有控制項指定的Layout_weight值相加,得到一個總值,然後每個控制項所佔大小的比例就是用該控制項的Layout_weight值除以剛才算出的總值。

因此,如果想讓EditText佔據屏幕寬度的3/5,Button佔據屏幕寬度的2/5,只需將EditText的Layout_weight改成3,Button的Layout_weight改成2就可以了,如圖:


好了,今天的課就到這裡,內容也相對比較簡單,大家有時間可以去練習一下,相信很快就能掌握Android線性布局頁面,我們下節課再見!

網際網路老黑,每周連載,一部給非程式設計師看的APP學習教程。

微信公眾號:網際網路老黑

相關焦點

  • Android 8.0 LinearLayout 源碼解析
    測量第三階段經過上面的分析之後,終於來到了最後的一個階段,在這裡會針對設置了 android:layout_weight 屬性的布局,重新計算 mTotalLengthvoid measureVertical(int widthMeasureSpec, int heightMeasureSpec) {
  • Android 約束布局(ConstraintLayout)詳解
    在 Component Tree 窗口中,右鍵單擊布局,然後單擊 Convert layout to ConstraintLayout。創建布局接下來,我們創建一個布局,根布局就用ConstraintLayout:<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com
  • Android ConstraintLayout約束布局可視化工具使用~
    ,今天我們簡單看看這個布局的使用。><android.support.constraint.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"
  • 帶你了解 Android 約束布局 ConstraintLayout
    ConstraintLayout是Android新推出的一個布局,其性能更好,連官方的hello world都用ConstraintLayout來寫了。所以極力推薦使用ConstraintLayout來編寫布局。本文主要介紹一下如何使用代碼來編寫ConstraintLayout布局。好了,開始我們的徵程。
  • android水平布局和垂直布局 - CSDN
    一、線性布局(LinearLayout)線性布局:線性布局是我們在開發中最常見的布局方式之一,線性布局可以分為水平線性布局和垂直線性布局這兩種布局方式線性布局的屬性(決定布局中元素的位置和布局):android:layout_gravity ( 是本元素相對於父元素的對齊方式 )android:gravity
  • 輕鬆掌握RelativeLayout相對布局
    android:layout_centerHorizontal:控制該組件是否和布局容器的水平居中。android:layout_centerVertical:控制該組件是否和布局容器的垂直居中。android:layout_centerInparent:控制該組件是否和布局容器的中央位置。
  • Android MotionLayout動畫:續寫ConstraintLayout新篇章
    1、通過Android Studio創建名為activity_motion的MotionLayout布局文件。2、 生成MotionLayout布局後會報紅,提示創建MotionScene.xml文件。
  • android絕對布局
    絕對布局由AbsoluteLayout代表。絕對布局就像java AWT編程中的空布局,就是Android不提供任何布局控制而是由開發人員自己通過X坐標、Y坐標來控制組件的位置。當使用AbsoluteLayout作為布局容器時,布局容器不再管理子組件的位置、大小---這些都需要開發人員自己控制。
  • android 排列 - CSDN
    每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。
  • MotionLayout系列之配合布局CoordinatorLayout, DrawerLayout, ViewPager使用
    在 Coordinatorlayout 中使用 MotionLayout:( MotionLayout 可以實現類似 CoodinatorLayout 的功能,我們將在以後的文章中提供示例)可以通過 MotionLayout 指定一部分 View 的動畫,將更多有趣的動畫加到已經存在的布局中。
  • Google 開源的 Android 排版庫:FlexboxLayout
    的一種布局,但是要比 Linearlayout 要強大的多。,我們在 Android 開發中使用 Linearlayout + RelativeLayout 基本可以實現大部分複雜的布局,但是Google就想了,有沒有類似 Flexbox 的一個布局呢?
  • 太有意思了,快用MotionLayout實現王者榮耀團戰
    比如DrawerLayout,viewpager切換的時候,可以設置一些view過渡的動畫。官網有一個類似youtube中運動動畫的案例,我這邊搬過來簡單說下。先看看效果來一起分析下:包含控制項:頂部布局控制項topLayout(包含頂部圖片topImage,播放按鈕topPlay,關閉按鈕topClose),中部布局midlayout(包含文字部分midView),下部菜單控制項bottomView。
  • Android View框架總結(五)View布局流程之Layout
    在自定義ViewGroup控制項中,onLayout配合onMeasure方法一起使用可以實現自定義View的複雜布局。自定義View首先調用onMeasure進行測量,然後調用onLayout方法動態獲取子View和子View的測量大小,然後進行layout布局。
  • Android ConstraintLayout使用指南
    ConstraintLayout最低兼容Android 2.3;目前Android Studio 2.3默認使用ConstraintLayout作為布局文件的根布局;想要使用ConstraintLayout,需在項目的build.gradle添加com.android.support.constraint:constraint-layout:XXX版本號依賴
  • ConstraintLayout的 使用大全
    "10        android:layout_width="0dp"11        android:layout_height="50dp"12        android:layout_marginStart="25dp"13        android:layout_marginTop="200dp"14        android:layout_marginEnd
  • Android基礎 - 如何做魯棒性更高的布局
    :layout_weight,當一個子布局放在LinearLayout中的時候,layout_weight屬性即可使用,它的意義在於「權重」,在線性布局中,子布局都是按照從上到下、從左到右來排列的,但當子布局的寬度或高度為match_parent,即佔滿父布局的全部寬高度時,這裡就會存在一個問題,其他的子布局會被擠出屏幕外,此時要讓他們「平均」顯示,就需要一個參數layout_weight了,將所有子布局設置
  • Android RecyclerView自定義LayoutManager
    這個方法就是RecyclerView Item的布局參數,換種說法,就是RecyclerView 子 item 的 LayoutParameters,若是想修改子Item的布局參數(比如:寬/高/margin/padding等等),那麼可以在該方法內進行設置。一般來說,沒什麼特殊需求的話,則可以直接讓子item自己決定自己的寬高即可(wrap_content)。
  • android 復用 布局優化專題及常見問題 - CSDN
    1、布局重用<include /> <include />標籤能夠重用布局文件,簡單的使用如下:     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"           android:orientation
  • android 中常用的五種布局 - CSDN
    相對布局特有的屬性:值是某個控制項和布局的idandroid:layout_below 在某控制項的下方android:layout_above 在某控制項的的上方android:layout_toLeftOf 在某控制項的左邊android:layout_toRightOf 在某控制項的右邊android:layout_alignTop 本控制項的上邊緣和某控制項的的上邊緣對齊
  • android布局詳解專題及常見問題 - CSDN
    -- 引用三次workspace_screen -->  <include android:id=」@+id/cell1 layout=」@layout/workspace_screen」 />  <include android:id=」@+id/cell2 layout=」@layout/workspace_screen」 />