【Android】常用參數實踐 用戶界面UI 布局文件XML

本文將系統總結 Android XML 布局的通用參數和常用布局類型的專屬規則


一、通用布局參數

這些參數適用于所有?View?和?ViewGroup,是布局設計的基石。

1. 尺寸控制

  • android:layout_width?與?android:layout_height
    定義視圖的寬度和高度,可選值:

    • match_parent:填滿父容器

    • wrap_content:自適應內容大小

    • 固定尺寸(如?100dp

<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content" />

2. 邊距與內邊距

  • android:layout_margin
    設置視圖外部的邊距(四個方向統一值)

  • android:layout_marginLeft/Top/Right/Bottom
    分方向設置外邊距

  • android:padding
    控制視圖內部內容與邊界的距離

<Buttonandroid:layout_margin="8dp"android:paddingLeft="16dp" />

3. 對齊方式

  • android:layout_gravity
    控制視圖在父容器中的對齊方式(如?center,?right|bottom

  • android:gravity
    控制視圖內部內容的對齊方式(常用于?TextView

<TextViewandroid:gravity="center_vertical|right" />

二、常用布局類型及核心參數

1. LinearLayout(線性布局)

特點:按水平或垂直方向線性排列子視圖

  • 方向控制
    android:orientation="horizontal"?或?"vertical"

  • 權重分配
    android:layout_weight:按比例分配剩余空間(需將對應寬/高設為?0dp

<LinearLayoutandroid:orientation="horizontal"><Buttonandroid:layout_width="0dp"android:layout_weight="1"android:text="按鈕1" /><Buttonandroid:layout_width="0dp"android:layout_weight="2"android:text="按鈕2" />
</LinearLayout>

2. RelativeLayout(相對布局)

特點:通過相對關系定位子視圖

  • 相對于父容器
    android:layout_alignParentTop="true"
    android:layout_centerInParent="true"

  • 相對于其他視圖
    android:layout_toRightOf="@id/view_id"
    android:layout_below="@id/view_id"

<Buttonandroid:id="@+id/btn_anchor"android:layout_centerHorizontal="true" /><Buttonandroid:layout_below="@id/btn_anchor"android:layout_alignParentRight="true" />

3. ConstraintLayout(約束布局)

特點:通過約束關系實現復雜布局(官方推薦)

  • 基礎約束

    app:layout_constraintStart_toEndOf="@id/view_id"  
    app:layout_constraintTop_toBottomOf="parent"
  • 居中與偏移

    app:layout_constraintHorizontal_bias="0.3"  
    app:layout_constraintVertical_bias="0.7"
  • 鏈條布局

    app:layout_constraintHorizontal_chainStyle="packed"
<Buttonapp:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.25" />

4. FrameLayout(幀布局)

特點:層疊顯示子視圖

  • 層級控制
    android:layout_gravity="center|top"
    通過代碼動態控制顯示層級

<ImageViewandroid:layout_gravity="center" />
<TextViewandroid:layout_gravity="bottom|right" />

5. GridLayout(網格布局)

特點:按行列網格排列

  • 行列控制

    android:layout_row="1"  
    android:layout_column="2"  
    android:layout_rowSpan="2"
<Buttonandroid:layout_row="0"android:layout_column="0"android:layout_columnSpan="2" />

三、最佳實踐與注意事項

1. 性能優化技巧

  • 減少嵌套層級
    優先使用?ConstraintLayout?替代多層嵌套的?LinearLayout

  • 復用布局組件
    使用?<include>?標簽復用公共布局

  • 使用?merge?標簽
    避免冗余的 ViewGroup 嵌套

2. 屏幕適配方案

  • 單位選擇

    • 尺寸使用?dp

    • 文字使用?sp

    • 使用?percent?庫實現百分比布局

  • 多套布局文件
    通過?res/layout-sw600dp?等目錄適配不同屏幕

3. 調試工具推薦

  • Layout Inspector
    實時查看布局層次結構

  • Profile GPU Rendering
    分析布局渲染性能

  • Lint 檢查
    自動檢測布局文件中的潛在問題


四、總結

????????建議從?ConstraintLayout?入手,結合其他布局類型的特點,靈活應對不同場景的需求。隨著 Compose 的興起,雖然 XML 布局逐漸讓位,但在維護現有項目時,這些知識仍然是 Android 開發者的必備技能。


延伸閱讀:官方文檔《使用 ConstraintLayout 構建自適應界面》

希望本文能幫助你更好地理解 Android 布局設計,歡迎在評論區分享你的布局實戰經驗!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901842.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決 VSCode 中 NVM 配置后無法識別 Node 和 NPM 的問題

在開發中&#xff0c;我們經常需要使用 Node.js 和 NPM 來管理 JavaScript 項目依賴&#xff0c;而 NVM&#xff08;Node Version Manager&#xff09;是開發者在本地環境中管理多個 Node.js 版本的得力工具。不過&#xff0c;有時候在 VSCode 中配置完 NVM 后&#xff0c;可能…

BGP分解實驗·23——BGP選路原則之路由器標識

在選路原則需要用到Router-ID做選路決策時&#xff0c;其對等體Router-ID較小的路由將被優選&#xff1b;其中&#xff0c;當路由被反射時&#xff0c;包含起源器ID屬性時&#xff0c;該屬性將代替router-id做比較。 實驗拓撲如下&#xff1a; 實驗通過調整路由器R1和R2的rout…

Linux: 線程同步

目錄 一 前言 二 線程饑餓 三 線程同步 四 條件變量 1. cond &#xff08; condition&#xff09; 2. pthread_cond_wait() &#xff1a; 3. pthread_cond_signal() 五 條件變量的使用 一 前言 在上篇文章Linux : 多線程互斥-CSDN博客我們講解了線程互斥的概念&#xff…

MyBatisPlus-QueryWrapper的exists方法拼接SQL中的EXISTS子句

在 MyBatis-Plus 中,QueryWrapper 的 exists 方法用于拼接 SQL 中的 EXISTS 子句,通常用于構 建子查詢條件。以下是具體用法和示例: ??1. 基本語法?? // 判斷是否存在符合條件的記錄 queryWrapper.exists(String existsSql); queryWrapper.notExists(String existsSq…

[數據結構]哈希表

目錄 1、哈希表 1.1、概念 1.2、沖突 2、哈希函數設計 3、負載因子調節 4、閉散列 5、開散列/哈希桶&#xff08;重點掌握&#xff09; 6、實現哈希桶 6.1、put方法 6.2、HashMap的擴容機制 6.3、get方法 7、HashMap 8、HashSet 8.1、哈希表性能分析 9、hashcod…

VS-Code創建Vue3項目

1 創建工程文件 創建一個做工程項目的文件夾 如&#xff1a;h5vue 2 cmd 進入文件 h5vue 3 輸入如下命令 npm create vuelatest 也可以輸入 npm create vitelatest 4 輸入項目名稱 項目名稱&#xff1a;自已輸入 回車 可以按鍵盤 a (全選) 回車&#xff1a; Playwright…

linux休眠喚醒流程

1、框架 2、休眠流程 應用層通過echo mem > /sys/power/state寫入休眠狀態&#xff0c;給一張大概流程圖 這個操作對應在kernel/power/main.c的state這個attr的store操作 static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr, …

Mysql--基礎知識點--93--兩階段提交

1 兩階段提交 以update語句的具體執行過程為例&#xff1a; 具體更新一條記錄 UPDATE t_user SET name ‘xiaolin’ WHERE id 1;的流程如下&#xff1a; 1.執行器負責具體執行&#xff0c;會調用存儲引擎的接口&#xff0c;通過主鍵索引樹搜索獲取 id 1 這一行記錄&#…

Windows 環境下 Apache 配置 WebSocket 支持

目錄 前言1. 基本知識2. 實戰前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn 原先寫過apache的http配置:Apache httpd-vhosts.conf 配置詳解(附Demo) 1. 基本知識 ?? WebSocket 是 HTTP 的升級協議 客戶…

UMAEA論文閱讀

Preliminaries MMKG為一個五元組G{E, R, A, V, T}&#xff0c;其中E、R、A和V分別表示實體集、關系集、屬性集和圖像集。 T?ERE是關系三元組集。 給定兩個MMKG G1 {E1, R1, A1, V1, T1} 和 G2 {E2, R2, A2, V2, T2}&#xff0c; MMEA旨在識別每個實體對&#xff08;e1…

AIGC-十款知識付費類智能體完整指令直接用(DeepSeek,豆包,千問,Kimi,GPT)

Unity3D特效百例案例項目實戰源碼Android-Unity實戰問題匯總游戲腳本-輔助自動化Android控件全解手冊再戰Android系列Scratch編程案例軟考全系列Unity3D學習專欄藍橋系列AIGC(GPT、DeepSeek、豆包、千問、Kimi)??關于作者 專注于Android/Unity和各種游戲開發技巧,以及各種資…

Qt界面卡住變慢的解決方法

本質原因: 當Qt界面出現卡頓或無響應時&#xff0c;通常是因為主線程&#xff08;GUI線程&#xff09;被耗時操作阻塞。 完全忘了。。。 Qt Creater解決方法 1. 定位耗時操作 目標&#xff1a;找到阻塞主線程的代碼段。 方法&#xff1a; 使用QElapsedTimer測量代碼執行時間…

【LangChain4j快速入門】5分鐘用Java玩轉GPT-4o-mini,Spring Boot整合實戰!| 附源碼

【LangChain4j快速入門】5分鐘用Java玩轉GPT-4o-mini&#xff0c;Spring Boot整合實戰&#xff01; 前言&#xff1a;當Java遇上大模型 在AI浪潮席卷全球的今天&#xff0c;Java開發者如何快速擁抱大語言模型&#xff1f;LangChain4j作為專為Java打造的AI開發框架&#xff0c…

Vue 3 reactive 和 ref 區別及 失去響應性問題

在 Vue 3 中&#xff0c;reactive 和 ref 是實現響應式數據的兩個核心 API&#xff0c;它們的設計目標和使用場景有所不同。以下是兩者的詳細對比&#xff1a; 1. 基本定義與核心功能 特性reactiveref作用創建對象類型的響應式代理&#xff08;對象、數組、Map 等&#xff09…

第一節:Vben Admin 最新 v5.0初體驗

系列文章目錄 基礎篇 第一節&#xff1a;Vben Admin介紹和初次運行 第二節&#xff1a;Vben Admin 登錄邏輯梳理和對接后端準備 第三節&#xff1a;Vben Admin登錄對接后端login接口 第四節&#xff1a;Vben Admin登錄對接后端getUserInfo接口 第五節&#xff1a;Vben Admin權…

Nginx部署spa單頁面的小bug

沒部署過&#xff0c;都是給后端干的&#xff0c;自己嘗試部署了一個下午終于成功了 我遇到的最大的bug是進入后只有首頁正常顯示 其他頁面全是404&#xff0c;于是問問問才知道&#xff0c;需要這個 location / { try_files $uri $uri/ /index.html; } 讓…

面試算法高頻08-動態規劃-01

動態規劃 遞歸知識要點 遞歸代碼模板&#xff1a;提供遞歸代碼的標準形式public void recur(int level, int param) &#xff0c;包含終止條件&#xff08;if (level> MAX_LEVEL)&#xff09;、當前層邏輯處理&#xff08;process(level, param)&#xff09;、向下一層遞歸…

若依框架前后端分離版部署全流程詳解(本地+服務器+高級配置)

若依框架前后端分離版部署全流程詳解&#xff08;本地服務器高級配置&#xff09; 若依&#xff08;RuoYi&#xff09;作為一款基于SpringBoot和Vue的權限管理系統&#xff0c;憑借其模塊化設計和開箱即用的特性廣受開發者歡迎。本文將從本地部署、服務器部署、高級配置三個維…

醫療設備預測性維護合規架構:從法規遵循到技術實現的深度解析

在醫療行業數字化轉型加速推進的當下&#xff0c;醫療設備預測性維護已成為提升設備可用性、保障醫療安全的核心技術。然而&#xff0c;該技術的有效落地必須建立在嚴格的合規框架之上。醫療設備直接關乎患者生命健康&#xff0c;其維護過程涉及醫療法規、數據安全、質量管控等…

LLMs基礎學習(七)DeepSeek專題(4)

LLMs基礎學習&#xff08;七&#xff09;DeepSeek專題&#xff08;4&#xff09; 文章目錄 LLMs基礎學習&#xff08;七&#xff09;DeepSeek專題&#xff08;4&#xff09;DeepSeek-R1 訓練過程的四個階段具體流程小結 “規則化獎勵”具體原因小結 “自我認知”&#xff08;se…