Android studio之ConstraintLayout使用

文章目錄

  • 優勢
  • 使用ConstraintLayout的步驟
  • 使用多種方式定義控件的位置

優勢

ConstraintLayout是一個相對布局,是在Android 2.3版本中引入的。它可以在不同的屏幕大小和分辨率中提供一致的布局,并且是支持復雜布局的最佳選擇之一。ConstraintLayout相對于其他布局,它的優勢有:

  1. 可以避免嵌套布局:相對于其他布局,如LinearLayout、RelativeLayout等,使用ConstraintLayout可以減少嵌套布局,這可以提高應用程序的性能。

  2. 更好的性能:ConstraintLayout 可以更快地布局復雜的視圖層次結構,這是因為它不需要遍歷整個視圖層次結構來確定每個視圖的位置。

  3. 更靈活的布局:ConstraintLayout 的靈活性使得它可以生成許多不同的布局,這些布局可以適應不同的設備和屏幕分辨率。

使用ConstraintLayout的步驟

  1. 在build.gradle文件中添加依賴項:
implementation 'androidx.constraintlayout:constraintlayout:2.0.0'
  1. 在XML布局文件中添加ConstraintLayout:
<androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><!--添加控件--></androidx.constraintlayout.widget.ConstraintLayout>
  1. 使用約束來定位控件:
<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />

在這個例子中,app:layout_constraintBottom_toBottomOfapp:layout_constraintEnd_toEndOfapp:layout_constraintStart_toStartOfapp:layout_constraintTop_toTopOf是約束,它們定義了控件的位置。這些約束將控件的上下左右邊緣綁定到父控件的相應邊緣。

通過使用約束,可以將控件的位置與其他控件、父控件或指定的點對齊。除了邊緣約束之外,還有其他約束可以使用,例如鏈約束,它可以將多個控件按一定順序組合,并將其視為一個單獨的單元。

使用多種方式定義控件的位置

在ConstraintLayout中,可以使用多種方式定義控件的位置,包括:

  1. 邊緣約束:將控件的上下左右邊緣綁定到父控件的相應邊緣。
<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
  1. 相對位置約束:將控件的位置綁定到其他控件的位置。
<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toTopOf="@+id/textView"app:layout_constraintEnd_toEndOf="@+id/textView"app:layout_constraintStart_toStartOf="@+id/textView"app:layout_constraintTop_toBottomOf="@+id/imageView" />

在這個例子中,button控件的頂部綁定到textView控件的底部,底部綁定到父控件的頂部,左右兩側綁定到textView控件的左右兩側。

基本方向約束
我的什么位置在誰的什么位置
app:layout_constraintTop_toTopOf="" 我的頂部和誰的頂部對齊
app:layout_constraintBottom_toBottomOf="" 我的底部和誰的底部對齊
app:layout_constraintLeft_toLeftOf="" 我的左邊和誰的左邊對齊
app:layout_constraintRight_toRightOf="" 我的右邊和誰的右邊對齊
app:layout_constraintStart_toStartOf="" 我的開始位置和誰的開始位置對齊
app:layout_constraintEnd_toEndOf="" 我的結束位置和誰的結束位置對齊
app:layout_constraintTop_toBottomOf="" 我的頂部位置在誰的底部位置
app:layout_constraintStart_toEndOf="" 我的開始位置在誰的結束為止
參考文章

  1. 指定位置約束:將控件的位置綁定到指定屏幕上的點。
<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toTopOf="@+id/textView"app:layout_constraintEnd_toEndOf="@+id/textView"app:layout_constraintStart_toStartOf="@+id/textView"app:layout_constraintTop_toBottomOf="@+id/imageView"app:layout_constraintVertical_bias="0.5"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintCircle="@+id/imageView"app:layout_constraintCircleRadius="100dp"app:layout_constraintCircleAngle="45" />

在這個例子中,button控件的位置被綁定到imageView控件的一個指定位置,半徑為100dp,偏移角度為45度。這個指定位置的偏移量可以使用app:layout_constraintVertical_biasapp:layout_constraintHorizontal_bias屬性進行調整。

  1. 鏈式約束:將多個控件按照一定順序組合成為一個單獨的單元,方便在布局中進行移動和調整。
<androidx.constraintlayout.widget.Chainandroid:id="@+id/chain"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_chainStyle="packed"app:layout_constraintHorizontal_chainStyle="spread_inside"><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 3" /></androidx.constraintlayout.widget.Chain>

在這個例子中,三個button控件被組合成為一個鏈,使用水平和垂直鏈樣式來定義它們的位置。

綜上所述,ConstraintLayout提供了多種方法來定義控件的位置,使得布局更加靈活和方便。開發者可以根據項目實際需求選擇合適的方式,實現自己需要的布局效果。

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

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

相關文章

ROS2+ROS_DOMAN_ID

The ROS_DOMAIN_ID? Table of Contents Overview Choosing a domain ID (short version) Choosing a domain ID (long version) Platform-specific constraints Participant constraints Domain ID to UDP Port Calculator Overview? As explained elsewhere, the de…

Dockerfile模板和Docker Compose模板

記錄一下Dockerfile模板和Docker Compose模板&#xff0c; 基礎的系統加JDK環境來構建一個Java應用&#xff0c;其Dockerfile內容如下&#xff1a; # 基礎鏡像 FROM openjdk:11.0-jre-buster # 設定時區 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/local…

如何搭建廢品上門回收小程序

如今&#xff0c;隨著環境保護意識的增強&#xff0c;廢品的回收和再利用變得越來越重要。為了方便人們進行廢品回收&#xff0c;搭建一個廢品上門回收的小程序成為了一個不錯的選擇。本文將介紹如何從零開始搭建一個廢品上門回收小程序。 …

vue寶典之項目結構介紹

文章目錄 &#x1f341;前言&#x1f341;Vue.js基本概念&#x1f341;Vue.js核心特性&#x1f341;Vue.js應用場景&#x1f341;Vue項目結構&#x1f341;Vue開發流程 目前在學習vue項目&#xff0c;之前只是學習vue中基本語法&#xff0c;當接觸項目時發現vue項目結構之間配置…

【Go自學版】02-goroutine

利用時間片分割進程&#xff0c;致使宏觀上A,B,C同時執行&#xff08;并發&#xff09; CPU利用率包含了執行和切換&#xff0c;進程/線程的數量越多&#xff0c;切換成本也會增大 最大并行數&#xff1a;GOMAXPROCS work stealing: 偷其他隊列的G hand off: 當前G1阻塞&#…

css 修改滾動條樣式,解決Windows瀏覽器中滾動條不美觀問題

Windows環境中的瀏覽器中滾動條默認是直接顯示了&#xff0c;不管光標是否進入該區域&#xff0c;這樣就很不美觀&#xff0c;如下圖&#xff1a; 之前樣式為 .well {display: block;background-color: #f2f2f2;border: 1px solid #ccc;margin: 5px;width: calc(100% - 12px);h…

mycat部署和配置讀寫分離(二)

說明&#xff1a; MyCAT 是使用 JAVA 語言進行編寫開發&#xff0c;使用前需要先安裝 JAVA 運行環境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性&#xff0c;所以要求必須在 JDK7 以上的版本上運行。 1. jdk1.8安裝 詳見jdk環境安裝 2. Mysql安裝 詳見mysql8.0.11源碼安裝…

websoket 的使用

WebSocket是HTML5的API之一&#xff0c;允許瀏覽器和服務器之間進行雙向通信。Vue.js可以輕松地與WebSocket API集成&#xff0c;使用原生WebSocket API或其他WebSocket庫&#xff08;如socket.io&#xff09;都是可行的。 下面是一個使用Vue.js實現WebSocket的簡單示例&#…

【lesson11】數據類型之string類型

文章目錄 數據類型分類string類型set類型測試 enum類型測試 string類型的內容查找找所有女生&#xff08;enum中&#xff09;找愛好有游泳的人&#xff08;set中&#xff09;找到愛好中有足球和籃球的人 數據類型分類 string類型 set類型 說明&#xff1a; set&#xff1a;集…

SL9008 3.6-60V輸入 LED降壓恒流芯片 內置MOS管 帶PWM調光

SL9008是一款內置MOS管、具有PWM調光功能的LED降壓恒流芯片&#xff0c;適用于3.6-60V的輸入電壓范圍。它采用了先進的電路設計&#xff0c;確保了高效率和長壽命&#xff0c;同時具有寬電壓輸入范圍和優異的負載調整率。 SL9008的主要特點包括&#xff1a; 1. 寬輸入電壓范圍&…

C語言中常用的庫函數和頭文件

下面是C語言中常用的一部分庫函數和頭文件&#xff0c;不同編譯器或操作系統可能會有所差異。 1. 字符串相關函數 (string.h)&#xff1a; - strlen&#xff1a;獲取字符串長度。 - strcpy、strncpy&#xff1a;復制字符串。 - strcat、strncat&#xff1a;連接字符串…

HarmonyOS4.0開發應用——【ArkUI組件使用】

ArkUI組件使用 這里會詳細演示以下組件使用: ImageTextTextInputButtonSliderColumn&&RowList自定義組件以及相關函數使用 Image 可以是網絡圖片、可以是本地圖片、也可以是像素圖 Image("https://ts1.cn.mm.bing.net/th?idOIP-C.cYA-_PINA-ND9OeBaolDTwHaHa&…

MySQL GTID詳解

概念 GTID 全局事務唯一標識&#xff08; global transaction identifier&#xff09; 格式 單個GTID由兩部分組成 &#xff0c;用冒號分割&#xff1b;前面一部分為server_uuid&#xff0c;后面一部分transaction_id是由事務在源上提交的順序確定的序列號 GTID server_u…

免費熱門的API大全整理

實人認證&#xff08;人像三要素&#xff09;&#xff1a;輸入姓名、身份證號碼和一張人臉照片&#xff0c;與公安庫身份證頭像進行權威比對&#xff0c;返回比對分值。實名認證&#xff08;身份證二要素&#xff09;&#xff1a;核驗身份證二要素&#xff08;姓名和身份證號碼…

CLIP在Github上的使用教程

CLIP的github鏈接&#xff1a;https://github.com/openai/CLIP CLIP Blog&#xff0c;Paper&#xff0c;Model Card&#xff0c;Colab CLIP&#xff08;對比語言-圖像預訓練&#xff09;是一個在各種&#xff08;圖像、文本&#xff09;對上進行訓練的神經網絡。可以用自然語…

鴻蒙HarmonyOS(ArkTS)語法 聲明變量及注意事項

好 今天我們來看一個基礎的harmonyOS語法 變量聲明 這里 我們還是用 ArkTS項目 我們聲明變量的語法并不是ArkTS的 而是 javaScript 和 TypeScript的 可以看一下下面一張圖 js是最初弱類型語言 于是TS作為js的副類 是一種更嚴謹的數據限定語法 而ArkTS 是TS的改良版 其實我們…

算法通關村第十八關 | 白銀 | 回溯熱門問題

1.組合總和問題 原題&#xff1a;力扣39. 元素可以重復拿取&#xff0c;且題目的測試用例保證了組合數少于 150 個。 class CombinationSum {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<>();public List…

一篇文章教你快速弄懂 web自動化測試中的三種等待方式

前言 現在的網頁很多都是動態加載的&#xff0c;如果頁面的內容發生了改變&#xff0c;就需要時間來渲染。在咱們做web自動化測試的時候&#xff0c;由于代碼是自動執行的&#xff0c;代碼在執行的時候&#xff0c;有可能上一步操作而加載的元素還沒加載出來&#xff0c;就會報…

配置本地端口鏡像示例(1:1)

本地端口鏡像簡介 本地端口鏡像是指觀察端口與監控設備直接相連&#xff0c;觀察端口直接將鏡像端口復制來的報文轉發到與其相連的監控設備進行故障定位和業務監測。 配置注意事項 觀察端口專門用于鏡像報文的轉發&#xff0c;因此不要在上面配置其他業務&#xff0c;防止鏡像…

建筑學VR虛擬仿真情景實訓教學

首先&#xff0c;建筑學VR虛擬仿真情景實訓教學為建筑學專業的學生提供了一個身臨其境的學習環境。通過使用VR仿真技術&#xff0c;學生可以在虛擬環境中觀察和理解建筑結構、材料、設計以及施工等方面的知識。這種教學方法不僅能幫助學生更直觀地理解復雜的建筑理論&#xff0…