LinearLayout(線性佈局)

来源:http://www.cnblogs.com/rocking7189/archive/2016/07/18/5682603.html
-Advertisement-
Play Games

顧名思義,LinearLayout是指將佈局或者是控制項以線性的形式排布到佈局里;當然,此處就涉及到兩個方向的排布,只要將LinearLayout中的android:orientation屬性的屬性值設置為vertical(垂直方向)和horizontal(水平方向)即可。 線性佈局當中的一些常見屬性 ...


顧名思義,LinearLayout是指將佈局或者是控制項以線性的形式排布到佈局里;當然,此處就涉及到兩個方向的排布,只要將LinearLayout中的android:orientation屬性的屬性值設置為vertical(垂直方向)horizontal(水平方向)即可。

線性佈局當中的一些常見屬性的說明:

屬性

屬性值

說明

 android:id

@+id/id_name

設置

android:layout_width

match_parent|wrap_content

設置佈局的寬度

android:layout_height

match_parent|wrap_content

設置佈局的寬度

android:weight

0|1|2…

設置佈局的權重比例

android:orientation

vertical|horizontal

設置佈局的方向

android:gravity

top|bottom|right|left…

設置佈局內組件的對齊方式

android:layout_gravity

top|bottom|right|left…

設置佈局在父控制項的對齊方式

android:background

RGB|十六進位

設置背景顏色

 

但是線上性佈局當中還有個權重需要註意一下,分水平方向與豎直方向來講吧

1. 垂直佈局:

在佈局文件中輸入以下代碼,很顯然是垂直佈局,然後添加了三個TextView用來顯示佈局的特點,分別加以background屬性用來設置背景顏色以示區分,首先先將各個TextView組件的寬度設置為匹配父控制項,然後將高度設置為0dip,因為現在是垂直排布,所以權重的設置是關於控制項的高度的;再將三個控制項的權重設置為2:1:3

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="2"
        android:background="#FF0000"
        android:text="第一行"
        android:textSize="24sp"
        android:gravity="center"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:background="#00FF00"
        android:text="第二行"
        android:textSize="24sp"
        android:gravity="center"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="3"
        android:background="#0000FF"
        android:text="第三行"
        android:textSize="24sp"
        android:gravity="center"/>

</LinearLayout>

 

可以看到其佈局格式如下麵圖左所示,看上去也就是2:1:3了。然後將上述代碼中的高度的屬性值改為match_parent,也就是說每一個控制項的高度都設置為了占滿一個屏幕,在實際中,如果設置前面的控制項已經占滿了屏幕之後,那麼後面的控制項因為沒有屏幕可以分配給他,所以會被擠到屏幕之外。但是可以觀察到佈局格式如下圖右所示:第三個控制項已經沒了,但是第一個和第二個卻是看上去1:2的比例。

  

 

出現圖左的格式是因為高度都設置為0,此時就還剩下一整個空白的屏幕能夠按照之前設置的權重比例來分配各控制項的高度。即第一個分配2/(2+1+3)的區間,第二個分配1/(2+1+3)的區間,第三個就分配3/(2+1+3)的區間

而出現右圖的情況是因為每一個控制項的高度都設置為匹配父控制項,因此要將三個控制項都完全的顯示在屏幕中,理論上是需要三塊屏幕來顯示的;不過實際上只有一個屏幕,當前面的控制項將屏幕占滿之後,後面的控制項就會因為沒有地方而被排擠在屏幕之外。因此,在此處。我們就缺少了兩塊屏幕用來顯示控制項。即缺少-2;但是因為此處設置了權重,所以缺少的部分就需要三個控制項按照其權重比來減少各自的部分。即有:第一個要在match_parent的基礎上減少(-2)*2/6的地方;第二個需要減少(-2)*1/6的地方;同樣的,第三個需要減少(-2)*3/6的地方;綜上所述,三個控制項剩下部分的比值就是[1-(-2)*2/6]:[1-(-2)*1/6]:[1-(-2)*3/6]=1:2:0

思考,當上述代碼中高度設置為match_parent,權重設置為2:2:3又會如何?

2. 水平佈局:

關於水平佈局只需將上述代碼中的android:orientation屬性設置為horizontal即可,具體的不再詳述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第0章 關於本書 1, 本書要用到一個工具函數————$$(),它可以讓我們更容易獲取和遍歷所有匹配特定css選擇符的dom元素: 2, 以下實現一個效果: 3, 檢查屬性是否存在: 檢測多個屬性: 檢測某個具體的屬性值是否支持: 第1章 前言 1, 不用-ms-border-radius和-o-b ...
  • 路由 通常HTTP URL的格式是這樣的: http://host[:port][path] http表示協議。 host表示主機。 port為埠,可選欄位,不提供時預設為80。 path指定請求資源的URI(Uniform Resource Identifier,統一資源定位符),如果URL中沒 ...
  • 寫在開篇: 浮動屬性的設計初衷,只是為了實現文本環繞效果! 時刻牢記這一點,才能正確使用浮動。 浮動元素的特征: 1.浮動元素脫離文檔流。 2.浮動元素周圍的外邊距不會合併。 3.浮動元素具有包裹性。 4.浮動元素具有破壞性。 下麵這段代碼,能夠驗證上述的四個特征,按提示操作即可。 1 <!DOCT ...
  • 一,代碼。 二,輸出。 ...
  • iOS學習(C語言)知識點整理 一、整型數組 1)概念:一組類型相同,空間連續分佈的數據。 2)int a[10] int 型裡面有10個元素,數組的名字叫a, a還是數組的首地址 。 3)引用數組中的元素 a[i]:數組名+下標,下標從0開始 。 4)數組元素個數剛好與數組長度相當叫完全初始化。 ...
  • 1.效果圖 2.創建頁面文件(main.xml) 1 <Spinner 2 android:id="@+id/spinner1" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" /> 5 6 < ...
  • 04
    04 ...
  • 相對佈局由其名稱大致可以猜測其是相對於其他的控制項進行佈局的。因此呢!其屬性也就比較多了,不過基本上都是有跡可循的。下麵就其屬性值的特點可以將一些常用的屬性分為以下三個類別。 1. 屬性值為true或false(相對於父控制項的位置) android:layout_centerHrizontal 水平居 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...