1. 程式人生 > >Android常用佈局(FrameLayout(框架佈局)、LinearLayout(線性佈局)、RelativeLayout(相對佈局))詳解

Android常用佈局(FrameLayout(框架佈局)、LinearLayout(線性佈局)、RelativeLayout(相對佈局))詳解

很多開發者一聽說Android終端的螢幕尺寸五花八門,螢幕解析度千奇百怪,就覺得Android開發在螢幕適配方面是必定是一件頭疼的事情。因為在Android問世之前,廣大開發者知道的UI解決方案大致分為兩類:

1、在Web開發中的CSS,一層一層的去層疊樣式。
2、在iOS開發中去計算每一個UIView的尺寸。

上面兩種方案,無論哪種方案面對碎片化嚴重的Android終端,那都是一場噩夢。好在Android提供了另一套解決方案來應對嚴重的終端碎片化,這就是佈局和9-patch。

這裡想來說說佈局,在Android SDK剛剛問世的時候,Android提供了AbsoluteLayout,FrameLayout,LinearLayout,RelativeLayout和Tablelayout五大布局來應對終端碎片化問題。

但很快Android發現AbsoluteLayout是一個愚蠢的方案,在Android 1.5系統中就不再支援此佈局,剩下的四個佈局中,Tablelayout雖然依然被支援,但是由於Fragment以及新的TabLayout的出現,博主在此斷言,Tablelayout也命不久矣,被移除支援只是遲早的事兒。

所以,Android的五大基本佈局現在只剩下三個(這裡說的是基本佈局,在Android support包裡引入的新的佈局不計入內),下面分別介紹一下這三個基本佈局。

一、FrameLayout
FrameLayout應該是Android系統中最簡單的佈局了,在FrameLayout中的元素,預設都是以FrameLayout控制元件的坐上頂點作為基準點,一層一層的重疊起來,後加進來的元素覆蓋前面的元素。

下面先來一個演示,程式碼如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <View android:layout_width
="200dp" android:layout_height="200dp" android:background="#ff0000"/> <View android:layout_width="200dp" android:layout_height="200dp" android:background="#000000"/> <View android:layout_width="200dp" android:layout_height="200dp" android:layout_margin="100dp" android:background="#00ff00"/> </FrameLayout>

執行結果如下:

相關推薦

Android常用佈局FrameLayout(框架佈局)LinearLayout線性佈局RelativeLayout相對佈局

很多開發者一聽說Android終端的螢幕尺寸五花八門,螢幕解析度千奇百怪,就覺得Android開發在螢幕適配方面是必定是一件頭疼的事情。因為在Android問世之前,廣大開發者知道的UI解決方案大致分為兩類: 1、在Web開發中的CSS,一層一層的去層疊樣式。

Android:控制元件佈局相對佈局RelativeLayout RelativeLayout相對佈局控制元件:以控制元件之間相對位置或相對父容器位置進行排列。 相對佈局常用屬性: 子類控制元件相對子

RelativeLayout是相對佈局控制元件:以控制元件之間相對位置或相對父容器位置進行排列。 相對佈局常用屬性: 子類控制元件相對子類控制元件:值是另外一個控制元件的id android:layout_above----------位於給定DI控制元件之上 android:layout_below -

Android常用ViewGroup之FrameLayout

簡介 幀佈局或叫層佈局,從螢幕左上角按照層次堆疊方式佈局,後面的控制元件覆蓋前面的控制元件,核心就是檢視的層疊。類似於圖層,這種檢視的疊加思路在開發中處處可見。 重要屬性 子View使用的屬性 - android:layout_gravity 調整子View

Arcgis for Js之Graphiclayer擴展

不同的 nes library 創建 都是 拖拽 oms hang graph http://blog.csdn.net/gisshixisheng/article/details/41208185 在前兩節,講到了兩種不同方式的聚類,一種是基於距離的,一種是基於區域範圍

轉載--SG函數和SG定理【

nbsp 發現 方式 spa 賦值 problem eve 查詢 mex 在介紹SG函數和SG定理之前我們先介紹介紹必勝點與必敗點吧. 必勝點和必敗點的概念: P點:必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。 N

Android"掛逼"修煉之行---微信中定位照片的位置信息插件開發

頁面 blank 如果 put 法律 mali 特殊字符 在哪裏 加載 一、前言 最近關於微信中,朋友之間發送原圖就可能暴露你的位置信息,其實這個問題不在於微信,微信是為了更好的體驗效果,才有發送原圖功能,而對於拍照,發送普通圖片微信後臺都會過濾圖片的exif信息,這樣就

總結Nginx配置文件nginx.conf中文

頁面 ulimit 正常 index.php 獲取 權重 bsd types keepal PS:Nginx使用有兩三年了,現在經常碰到有新用戶問一些很基本的問題,我也沒時間一一回答,今天下午花了點時間,結合自己的使用經驗,把Nginx的主要配置參數說明分享一下,也參考了一

總結關於Linux的快取記憶體 Cache Memory

Linux與Win的記憶體管理不同,會盡量快取記憶體以提高讀寫效能,通常叫做Cache Memory。有時候你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體free項會很少,此時檢視系統的 /proc/meminfo 檔案,會發現有一項 Cached Memory:

osgEarth的Rex引擎原理分析十七瓦片請求的生成到處理過程

目標:(十六)中問題38 瓦片請求的大概過程是這樣的: 1、osgEarth::Drivers::RexTerrainEngine::TileNode在渲染遍歷時產生LoadTileData請求,將請求傳遞給DatabsePager改造成DatabaseRequest請求後,將此請求放入了D

jvm原理34虛方法表與動態分派機制

編寫程式碼: public class MyTest7 { public static void main(String[] args) { Animal animal = new Animal(); Animal

MySQLMySQL中的隔離級別,事務

MySQL的基礎語法,增刪改查就不多贅述了,我打算直接從事務開始,以後如果寫到了,再補充相關的知識。 參考文章: https://www.cnblogs.com/songjy2116/p/7881294.html https://blog.csdn.net/alexdamiao/arti

C++學習之路47---C++類模板與模板類深入

1、在c++的Template中很多地方都用到了typename與class這兩個關鍵字,而且有時候二者可以替換,那麼是不是這兩個關鍵字完全一樣呢? 事實上class用於定義類,在模板引入c++後,最初定義模板的方法為:template<class T>,這裡cl

[Xcode10 實際操作]一博主領進門-(8)應用代理文件(AppDelegate.swift)

工作 active delegate ring launching 應用 exe 界面 sources 本文將演示使用iOS模擬器,演示程序的生命周期。 在項目導航區,打開應用代理文件【AppDelegate.swift】 應用代理文件時系統運行本應用的委托,裏面定義了

Linux13RedHat7 基本命令十一--cat命令

導言   今天博文講述檢視檔案內容的命令,這個命令是cat。cat命令是最簡單粗暴的命令,將檔案內容直接打印出來。 cat命令 作用   將[檔案]或標準輸入組合輸出到標準輸出。   通俗來講,可以用

Linux14RedHat7 基本命令十二--more命令

導言   今天博文講述另一個檢視檔案內容的命令,這個命令是more。more 命令類似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯

大資料工程師學習路徑第四步 SQL基礎課程----select

準備 在正式開始本內容之前,需要先從github下載相關程式碼,搭建好一個名為mysql_shiyan的資料庫(有三張表:department,employee,project),並向其中插入資料。 具體操作如下,首先輸入命令進入Desktop: cd Desktop 然後再輸入命

最完整的Mybatis Generator簡稱MBG的最完整配置檔案,帶

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0

http協議基礎http狀態碼 Status Code狀態碼對照表

一:http狀態碼 表示客戶端http請求的返回結果、標記伺服器端的處理是否正常、通知出現的錯誤等工作 狀態碼的類別如下: http狀態碼種類繁多,大概有60多種,實際上經常使用的只有14種,下面為一一介紹   1、2XX 成功:請求被正常處理 1.1 200 OK 表示從客戶端發

Java程式設計師從笨鳥到菜鳥之七十四細談Springspring之AOP基本概念和配置

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                       首先我們來看一下官方文件所給我們的關於AOP的一些概念性詞語的解釋:切面(Aspect):一個關注點的模組化,這個關注點可能會橫切多個物件。事務管

Spark原始碼系列Spark SQL初體驗之解析過程

首先宣告一下這個版本的程式碼是1.1的,之前講的都是1.0的。 Spark支援兩種模式,一種是在spark裡面直接寫sql,可以通過sql來查詢物件,類似.net的LINQ一樣,另外一種支援hive的HQL。不管是哪種方式,下面提到的步驟都會有,不同的是具體的執行過程。下面