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索引塊的組成 索引塊的查詢過程 索引塊目前在做的改進項 索引塊 索引 ...
一周排行
  • 一、直接使用線程的問題每次都要創建Thread對象,並向操作系統申請創建一個線程,這是需要耗費CPU時間和記憶體資源的。無法直接獲取線程函數返回值無法直接捕捉線程函數內發生的異常 使用線程池可以解決第一個問題二、.NET中的線程池 在這裡只簡單的介紹一下ThreadPool,由於TPL的存在,我工作中... ...
  • 上次課程我們新建了管理員的模板頁。 本次我們就完善這個模板頁,順便加入樣式和一些基本的組件,配置好整個項目的UI風格。 一、引入 共用的css和js文件 後端庫用nuget, 前端庫用libman. 右鍵wwwroot文件夾,選擇菜單 Add / Client-Side Library 我們使用ad ...
  • 場景 在使用IIS部署ASP.NET的Web項目時提示: InvalidOperationException:未能映射路徑“/” 註: 博客: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編程相關電子書、教程推送與免費下載。 實現 ...
  • 場景 ASP.NET中新建MVC項目並連接SqlServer資料庫實現增刪改查: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107024544 在上面實現了新建簡單的MVC項目以及連接資料庫實現簡單的增刪改查後怎樣將網站部署到 ...
  • --先給GridView控制項註冊滑鼠按下事件gv.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gv_MouseDown); --在滑鼠按下事件裡面增加滑鼠右鍵判斷,並增加滑鼠右鍵菜單複製單元格功能。 private voi ...
  • 用C#代替Javascript來做Web應用,是有多爽? 今天聊聊 Blazor。 Blazor 是一個 Web UI 框架。這個框架允許開發者使用 C# 來創建可運行於瀏覽器的具有完全交互 UI 的 Web 應用。 可以理解為,這是一個 C# 語言的 Vue / Angular / React,可 ...
  • 場景 ASP.NET中新建Web網站並部署到IIS上(詳細圖文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107199747 在上面博客中已經將網站部署到了IIS上。 但是如果網站很大,頁面比較多,甚至每個頁面都有不少 ...
  • 從事這麼多年的.NET,這段時間來,學習另外一門技術Python。 購買相關的書籍,不停地看書。 然後在VS安裝Python,然後可以上機練習,編寫代碼...... ...
  • 一個微小的投入就會帶來巨大的突變 集群安全模式 為什麼出現集群安全模式呢? ​ Namenode啟動時,首先將鏡像文件載人記憶體,並執行編輯日誌中的各項操作。一旦在內存中成功建立文件系統元數據的映像,則創建一個新的Fsimage文件和一個空的編輯日誌。此時,** Namenode開始監聽Datanod ...
  • 1. 通過new對象實現反射機制( 對象.getClass() ) 2. 通過路徑實現反射機制( Class.forName("包名.類名") ) 3. 通過類名實現反射機制 ( 類名.Class ) class Student { private int id; String name; prot ...