Android Studio 學習筆記(二):佈局簡介和xmlns說明

来源:https://www.cnblogs.com/ifever/archive/2020/02/14/12309148.html

簡單介紹了線性佈局和相對佈局,同時分析了xml文件三個固定開頭xmlns:namespace-prefix="namespaceURI" ...


初學Android Studio,是在b站看的教程視頻,這裡的筆記也是以其為基礎的,個人強烈安利:

【天哥】Android開發視頻教程最新版 Android Studio開發

Android 佈局簡介

可以把界面設計看作是,讓各個控制項都擺放得有條不紊,各得其所。佈局就相當於放置控制項的容器,通過控制佈局參數,可以按照一定規律調整內部控制項的位置。

一個豐富的Android界面由UI控制項和結構化佈局對象組成。

常見佈局可分為以下幾類:

  • 線性佈局(LinearLayout)
  • 相對佈局(RelativeLayout)
  • 表格佈局(TableLayout)
  • 網格佈局(GridLayout)
  • 幀佈局(FrameLayout)

此外,還有基本不會使用的絕對佈局(AbsoluteLayout)和採用可視化界面拖拽控制項的約束佈局(ConstraintLayout)

佈局至少需要設置的屬性為android:layout_widthandroid:layout_height

分別控制佈局的寬度和高度,一般填入的參數為match_parent1和wrap_content2,如果有需要也可填入具體尺寸

下麵介紹線性佈局和相對佈局的幾個特有屬性。

線性佈局

  • LinearLayout用於使所有子視圖在單個方向(垂直或水平)保持對齊,方向由android:orientation決定,預設值為vertical(垂直),可改為horizontal(水平)

  • 若需要讓子元素使用大小不同的屏幕空間 ,可設置權重劃分屬性 android:layout_weight,規則是控制項先按占用設置的寬度或高度,剩餘的寬度或高度按設置權重相應的比例來分配。

相對佈局

  • RelativeLayout 用於以相對位置顯示子視圖。可以指定為相對於同級元素定位(例如在另一個視圖的左側或下方)或相對於父級區域定位(例如在左側、底部或中心對齊)

  • margin與padding的區別:

    margin代表的是偏移,針對的是容器中的組件

    padding代表的則是填充,針對的是組件中的元素

  • gravity類似於Word裡面的設置文字對齊方式,可以設置容器內組件的對齊方式,

線性佈局比較適合所有控制項都是整齊排列的頁面,載入速度較慢。

相對佈局可以按照自己的想法來放置控制項的位置,但寫起來比較麻煩,需要自己考慮好所有控制項的的佈局。

代碼說明

簡單分析下佈局文件xml中的開頭:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"    
xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"
...

version="1.0":聲明用的xml版本是1.0

encoding="UTF-8":聲明用xml傳輸數據使用的字元編碼為UTF-8。(UTF-8可傳中文)

下麵是三個同樣的句式,xmlns:namespace-prefix="namespaceURI"

xmlns:保留字xml namespace的縮寫,意思是xml命名空間

namespace-prefix:命名空間首碼

namespaceURI:命名空間唯一標識符 URI3

xmlns:android="http://schemas.android.com/apk/res/android"

聲明這個命名空間引用自Android系統

xmlns:app="http://schemas.android.com/apk/res-auto"

導入自定義控制項的一些屬性或者support支持包

xmlns:tools="http://schemas.android.com/tools"

用於調試預覽,打包為apk的時候所有tools添加的屬性都會被摒棄,方便進行頁面調整

img

圖片來自——Android佈局文件中的xmlns:tools作用以及用法https://blog.csdn.net/qq_24531461/article/details/52804473

本來打算做個demo演示一下的,考慮到控制項還沒寫,放到後面的部分吧....

參考資料

  1. Google 安卓開發者指南 佈局部分

    https://developer.android.google.cn/guide/topics/ui/layout

  2. Android開發的常用佈局

    <https://zhuanlan.zhihu.com/p/87343947 >

  3. Android Studio中match_parent和wrap_content的區別https://blog.csdn.net/qq_38900441/article/details/83420480

  4. Android線性佈局和相對佈局的詳解和區別https://blog.csdn.net/weixin_40783315/article/details/83589369

  5. RelativeLayout(相對佈局)|菜鳥教程

    https://www.runoob.com/w3cnote/android-tutorial-relativelayout.html

  6. <?xml version="1.0" encoding="utf-8"?>的作用

    https://www.cnblogs.com/neil-/p/5416337.html

  7. Why this line xmlns:android="http://schemas.android.com/apk/res/android" must be the first in the layout xml file?

    http://www.it1352.com/79986.html

  8. Android佈局文件中的xmlns:tools作用以及用法https://blog.csdn.net/qq_24531461/article/details/52804473

  9. Android佈局理解之xmlns

    https://www.jianshu.com/p/accb46a12a53


  1. 匹配父佈局,也就是由父佈局來決定當前控制項的大小

  2. 包含內容,也就是由控制項內容決定當前控制項的大小

  3. A Uniform Resource Identifier (URI) is a string of characters which identifies an Internet Resource.The most common URI is the Uniform Resource Locator (URL) which identifies an Internet domain address. Another, not so common type of URI is the Universal Resource Name (URN).因此這裡看似一個網址(URL),實際上相當於一個固定值(常量),不可訪問


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

更多相關文章
  • ASPNetCore 發佈到IIS 準備工作 1.1. 安裝IIS。(具體操作不再說明) 安裝成功後再瀏覽器輸入localhost得到的頁面如下 1.2. 安裝dotnet-hosting-2.2.2-win.exe安裝成功後在IIS 中可以看到如下兩個程式 這兩個程式對應得NetCore的版本不一 ...
  • 1.Ctrl+s:快速保存代碼 一定要記得隨時隨地用 Ctrl+s 來保存我們的代碼哦!!!不然等到電腦關機或者是使用的Eclipse突然閃退就欲哭無淚了。此時腦海裡就突然出現了嗶嗶嗶的畫面~ 2.Alt+/:自動補全代碼或者提示代碼後半部分 牆裂推薦大家使用啊,真的是超級好用了。 給大家舉一個例子 ...
  • 在看 apue 第 19 章偽終端第 6 節使用 pty 程式時,發現“檢查長時間運行程式的輸出”這一部分內容的實際運行結果,與書上所說有出入。 於是展開一番研究,最終發現是書上講的有問題,現在摘出來讓大家評評理。 先上代碼 pty.c pty_fun.c 這是書上標準的 pty 程式,簡單說起來就 ...
  • 背景介紹 我們在工作中難免會寫一些重覆性的代碼,所以需要我們具備一定的抽象能力,比如把共同的邏輯抽取到抽象類中,也可以通過一些工具類來避免冗餘代碼 今天這篇文章就是把一個調用服務的重試功能抽取出一個工具類,以備復用。這裡為了方便介紹,把調用服務簡化成方法的調用,被調用的 foo 方法如下: ~~~ ...
  • 1 SQL 的哲學 形如 Linux 哲學一切都是文件,在 SQL 領域也有這樣一條至理名言 2 關係資料庫 所謂關係資料庫(Relational database)是創建在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據。 現實世界中的各種實體以及實體之間的各種聯繫均用關 ...
  • 該文為《 MySQL 實戰 45 講》的學習筆記,感謝查看,如有錯誤,歡迎指正 一、索引簡介 索引就類似書本的目錄,作用就是方便我們更加快速的查找到想要的數據。 索引的實現方式比較多,常見的有 ,`有序數組 搜索樹`。 1.1 哈希表 是將數據以 的形式存儲起來,簡單來說就是將 通過哈希函數換算成數 ...
  • 資料庫索引是資料庫系統中一個重要的概念,索引也叫做 key ,是一種用於提升資料庫查詢效率的數據結構,我們可以把索引理解成一本書的目錄,通過目錄我們可以快速找到對應章節的內容,同樣的,通過資料庫索引,我們可以快速找到數據表中對應的記錄。 ...
  • 上一章聊到 TsFile 的文件組成,以及數據塊的詳細介紹。詳情請見: 時序資料庫 Apache-IoTDB 源碼解析之文件數據塊(四) 打一波廣告,歡迎大家訪問IoTDB 倉庫,求一波 Star。 這一章主要想聊聊: TsFile索引塊的組成 索引塊的查詢過程 索引塊目前在做的改進項 索引塊 索引 ...
一周排行
  • Consul是HashiCorp公司推出的開源工具,Consul由Go語言開發,部署起來非常容易,只需要極少的可執行程式和配置文件,具有綠色、輕量級的特點。Consul是`分散式`的、`高可用`的、 `可橫向擴展`的用於實現分散式系統的服務發現與配置。 ...
  • Blazor的哪個特點, 可以讓程式員快速完成任務? 這隨筆講解的是使用代碼上下文來節約代碼, 讓驗證碼機制變得更加簡易. ...
  • 在C#中,struct和class都是用戶定義的數據類型,struct和class有許多不同之處,但主要的區別是: Class是引用類型,它保存在堆上並且能夠被垃圾回收;然而stuct是值類型,它保存在棧上或者內嵌在它的包含類型之中。因此,從總體上來說struct比class節省記憶體。 下圖是Cla ...
  • 這篇文章,我將帶領大家學習ASP.NET Core中的launchSettings.json文件。為了學習它,我們打開之前建的空白模板的ASP.NET Core項目。 從上面的圖片中你可以看到,我們項目的屬性中有一個launchSettings.json文件。那麼我們來一起學習這個重要的文件吧。la... ...
  • [TOC] 都是迭代,為啥我一定要用foreach ​ 問題起源於本人的一個練手的撲克牌程式:洗完牌之後要發給場上的三人。 ​ 只發給單個人的時候用 foreach 迴圈一下就好了,但三個人就有點麻煩了。 ​ 牌組用list保存你可能會想到這樣寫: 對於字典,可以使用 : 可能各位早會這樣弄了,讓各 ...
  • 首先以Winform項目開發舉例 1.完整的學習計劃 2.對於學習內容分類 3.良好的學習習慣 4.項目實踐 學習計劃 1.基礎篇 2.提高篇 3.應用篇 內容分類 1.語法 2.控制項 3.業務邏輯 學習習慣 1.時間安排 2.進度安排 3.記錄筆記 4.練習寫代碼 項目實踐 1.實現頁面展示 2. ...
  • 在進行 Asp.NetCore.MVC 文件上傳時,後臺無法正常讀取文件流保存,出現:Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead. 查找資料,發現需要 ...
  • 在這篇文章中,我將詳細介紹在ASP.NET Core中使用appsettings.json文件的重要性。這篇文章,我將詳細介紹下麵幾個問題:在ASP.NET Core應用程式中,有哪些不同的配置資源可用呢?什麼是ASP.NET Core appsetting.json文件?在ASP.NET Core ...
  • 這篇文章中,我將帶領大家一起詳細學習:ASP.NET Core Middleware Components.這篇文章中,我將詳細討論下麵幾個問題:什麼是ASP.NET Core 中的中間件組件?ASP.NET Core應用程式中,在哪裡來使用中間件組件?怎樣來配置ASP.NET Core 應用程式中... ...
  • 參考 ABP設計UI菜單欄的源碼分析,抽出了ABP這塊自定義擴展的實現。在ABP的源碼裡面有很多地方都用到了這種設計方式,實現了用戶自定義擴展。 新建一個空的asp.net core項目,新建一個類,源碼: StartUp類源碼: 擴展點:在 中提供用戶自定義擴展點,完美的是下瞭解耦。 參考: "B ...