国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中關于相對布局RelativeLayout的技巧匯總

2019-12-12 03:34:09
字體:
來源:轉載
供稿:網友

前言

首先大家可以思考下如何用RelativeLayout而且沒有嵌套生成下面的布局,如果你會的話就不用看后面的了。

分析

這個布局的特點是按鈕3底部對齊,按鈕2在按鈕3的上面,文本框水平充滿剩余的區域,按鈕1頂部對齊,列表框垂直充滿剩余的區域。

下面我們會拆分為下面兩個子問題:

水平充滿剩余區域的問題

水平方向上有兩個組件,一個組件寬度為wrap_content(或者固定寬度),另外一個組件的需要充滿剩余的寬度,效果如下: 

左側一個文本框,右側一個按鈕

如果是嵌套一個LinearLayout布局肯定就十分簡單了,如果用RelativeLayout也是可以的,如下:

<Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/btn3" android:layout_alignParentRight="true" android:text="按鈕2" /><EditText android:id="@+id/et" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@id/btn2" android:layout_alignParentLeft="true" android:layout_toLeftOf="@id/btn2" />

主要方法如下:(主要通過toRightOf和toLeftOf兩個屬性)

      1. 兩個組件的布局寬度都是wrap_content(或者固定寬度)

      2. 左邊的組件alignParentLeft,右邊的組件alignParentRight(如果他們左右分別有一些固定寬度的組件,就用toRightOf(左側)或者toLeftOf(右側)指定的組件)

      3. 為了讓左邊的組件緊挨著右邊的組件,也就是拉長左側的文本框,設置toLeftOf="右邊組件的ID" (這里是重點),這樣,左側文本框就會自動拉伸至和右側按鈕緊挨著。

      4. 當然,最后,兩邊組件要水平對齊,對左邊組件用alignBaseline="右邊組件的ID"

      5. 注意要把右側按鈕在代碼中放到前面(否則編譯時找不到對應的id,因為左側EditText布局依賴右側按鈕)

垂直充滿剩余空間的問題

垂直方向上有兩個組件,第一個組件的高度為wrap_content(或固定高度),另外一個組件的高度需要充滿剩余的高度,效果如前面的ListView: 

這個時候也可以通過RelativeLayout實現,下面我貼出了整個布局的代碼(為了更好的說明,我在上面和下面都加了一個組件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"> <Button  android:id="@+id/btn1"  android:layout_width="match_parent"  android:layout_height="50dp"  android:text="固定寬度按鈕"/> <Button  android:id="@+id/btn3"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_alignParentBottom="true"  android:text="按鈕3"/> <Button  android:id="@+id/btn2"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_above="@id/btn3"  android:layout_alignParentRight="true"  android:text="按鈕2"  /> <EditText  android:id="@+id/et"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignBaseline="@id/btn2"  android:layout_alignParentLeft="true"  android:layout_toLeftOf="@id/btn2"  /> <ListView  android:id="@+id/lv"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_above="@id/btn2"  android:layout_below="@id/btn1"  /></RelativeLayout>

主要看ListView的布局,方法如下:

      1. 讓ListView below=上面的組件

      2. 讓ListView above=下面的組件

      3. 注意將ListView依賴的組件都放到ListView的上面

看前面我們給出的完整的布局文件代碼,這里需要說明如下內容:

注意組件在代碼中的前后擺放,不然會編譯報錯(前面一直在說),方法如下:

需要拉伸的組件放到后面,然后用另一個組件來進行整體的布局。也就是被依賴位置的都放到前面,那些固定長寬(指的是固定或者wrap_content且不依賴其他組件布局的)或者依賴父容器的組件都放到前面,其他組件放到后面,如前面的按鈕1,按鈕3,按鈕2都放到了前面,因為按鈕2依賴于按鈕3(按鈕2 above 按鈕3),所以按鈕2也放到了按鈕3的后面。 (按鈕1說的是最上面那個固定高度按鈕)

讓兩個組件水平中線對齊的問題

讓一個組件和另外一個組件中線對齊:讓其中一個組件足夠高(或者我們知道哪個組件高度一定是高于頂一個組件的),然后讓需要對齊的組件和這個沒有內容的組件上下皆對齊(alignTop,alignBottom設置),然后將第二個組件的gravity為垂直居中即可。
如果是有 baseline 屬性的 TextView,Button 這類顯示文本的組件的話,可以通過 align_Baseline 來進行對齊,這里的 baseline指的是文本底部對其的,就像我們小時候拿一把尺子,然后比著尺子寫字那種意思。

總結

以上就是這篇文章的全部內容了,希望本文的內容對各位Android開發者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安仁县| 沛县| 夏邑县| 渝北区| 桃园县| 安平县| 三穗县| 阿荣旗| 郎溪县| 隆回县| 百色市| 石首市| 周宁县| 庆元县| 顺平县| 平果县| 班玛县| 阳新县| 三都| 鄯善县| 辉南县| 平江县| 万盛区| 名山县| 买车| 江阴市| 长葛市| 老河口市| 大足县| 田林县| 广饶县| 南昌市| 龙江县| 宁德市| 贵德县| 长春市| 阿克苏市| 闸北区| 连州市| 阜康市| 彩票|