日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android相对布局(RelativeLayout)

發布時間:2025/4/16 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android相对布局(RelativeLayout) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android相對布局(RelativeLayout)

?

備注:這里的視圖和元素是等同的概念。

?

RelativeLayout是一個允許子視圖相對于其他兄弟視圖或是父視圖顯示的視圖組(通過ID指定)。每個視圖的位置能夠指定它相對于兄弟(比如在其他視圖的左邊或是下邊)或是父視圖(這里是指相對布局容器,比如底部對齊、中間偏左)的位置。


圖1

RelativeLayou是一個用于設計用戶界面的強大工具,因為它能消除嵌套視圖組和保持我們布局為扁平結構,這可以提高運行時性能。如果我們采用了多個嵌套的LinearLayout組,我們應該采用一個單獨的RelativeLayout來替代。

?

1.??????配置視圖(positioning views)

我們能夠通過右邊界對其兩個元素,或是使一個元素位于兩一個下面,居中在顯示屏上、左居中、等等。默認情況下,所有的子視圖在布局的左上角顯示,所以我們必須使用RelavieLayout.LayoutParams中多種多樣的布局屬性來定義每個視圖的位置。

?

每個布局屬性值既可以是一個確定相對于父容器RelativeLayout布局位置的boolean類型,也可以是某個子視圖的ID,即此視圖相對于其他視圖的位置。

?

在我們的XML布局文件中,可以以任何順序來聲明布局中相對于其他視圖的關系。比如,我們可以聲明view1在view2的下面,盡管view2在布局層次的最后申明。

?

2.??????相對布局常用的屬性

分為幾類:

(1)????布局容器中通用的,不管是相對布局、線性布局等布局容器。

Android:gravity設置該布局容器內個子組件的對齊方式,比如button組件中內容在button中的對齊方式,比如:

<Button

???????android:id="@+id/button1"

???????android:layout_width="120dp"

???????android:layout_height="wrap_content"

???????android:text="確認"

/>

?

如果沒有社會自gravity屬性值,button的內容默認是在button組件居中顯示的,而且可以看到button是位于左上角的,如下圖:


圖2

我們增加android:gravity="left",讓“確認”在button的左邊顯示,如下圖:


圖3

Android:ignoreGravity設置哪個組件不受gravity屬性的影響。

?

(2)????屬性值為具體像素值的屬性,如30dip,40px

android:layout_marginBottom 離某元素底邊緣的距離

android:layout_marginLeft 離某元素左邊緣的距離

android:layout_marginRight 離某元素右邊緣的距離

android:layout_marginTop 離某元素上邊緣的距離

?

下面兩種屬性是由RelavieLayout.LayoutParams定義。

(3)????屬性值為true或是false的屬性

android:layout_alignParentBottom控制該組件是否和布局管理器底端對齊。

android:layout_alignParentEnd控制該組件是否和布局管理器末端對齊。

android:layout_alignParentLeft 控制該組件是否和布局管理器左邊對齊

android:layout_alignParentRight控制該組件是否和布局管理器右邊對齊

android:layout_alignParentStart控制該組件是否和布局管理器開始對齊

android:layout_alignParentTop控制該組件是否和布局管理器頂部對齊

android:layout_alignWithParentIfMissing 如果對應的兄弟元素找不到的話就以父元素做參照物

先來看下面內容

<Button

???????android:id="@+id/button2"

???????android:layout_width="wrap_content"

???????android:layout_height="wrap_content"

???? ???android:text="按鍵2"

??????? />

的布局界面:


圖4

我們增加android:layout_alignParentTop="true",還是和圖4一樣,是因為這里只是讓按鍵2和其父容器頂部對齊,如果要讓按鍵2水平居中且和頂部對齊,需要增加android:layout_centerHorizontal="true",效果圖如下:


圖5

當然了,如果沒有android:layout_alignParentTop="true",也可以達到圖5的效果,因為默認就是頂部對齊的,這里只是說明它們的作用而已。

?

??? <Button

???????android:id="@+id/button2"

???????android:layout_width="wrap_content"

???????android:layout_height="wrap_content"

???? ???android:text="按鍵2"

???????android:layout_alignParentTop="true"

???????android:layout_centerHorizontal="true"

??????? />

這里尤其要注意android:layout_alignParentBottom和android:layout_alignParentEnd的差別,前者是指底部對齊,后者指末端對齊,如下圖:


圖6

圖6是指按鍵2的底部和父容器底部對齊。


圖7

圖7表示按鍵2和父容器末端對齊,相關的XML控制代碼如下:

<Button

???????android:id="@+id/button2"

???????android:layout_width="80dp"

???????android:layout_height="60dp"

???????android:text="按鍵2"

???????android:layout_alignParentEnd="true"

??????? />

?

android:layout_centerHorizontal 水平居中

android:layout_centerVertical 垂直居中

android:layout_centerInparent 相對于父容器完全居中

?

(4)????屬性值為其他組件ID的屬性

android:layout_above本組件在某組件的上方

android:layout_alignBaseline本組件和某組件的基線對齊。

android:layout_alignBottom 本組件的下邊緣和某組件的的下邊緣對齊

android:layout_alignEnd本組件的末端和某組件末端對齊

android:layout_alignRight 本組件的右邊緣和某組件的的右邊緣對齊

android:layout_alignLeft本組件左邊緣和某組件左邊緣對齊

android:layout_alignStart本組件的開始端和某組件開始端對齊

android:layout_alignTop 本組件的頂部和某組件的的頂部對齊

android:layout_below 本組件在某組件的下方

?

android:layout_toEndOf本組件在某組件末端

android:layout_toLeftOf本組件在某組件的左邊

android:layout_toRightOf本組件在某組件的右邊

android:layout_alignLeft 本組件在某組件開始端

?

這里基線概念很重要,參考http://blog.csdn.net/kehrwang/article/details/9041847。

基線解釋:書寫英語單詞時為了規范書寫會設有四條線,從上至下第三條就是基線。基線對齊主要是為了兩個控件中顯示的英文單詞的基線對齊。


四、第四組:中心對齊。值為true/false ? ? ? ?


3.??????綜合的例子

?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="fill_parent"
? ? android:layout_height="fill_parent"
? ? android:paddingLeft="16dp"
? ? android:paddingRight="16dp">
? ? <EditText
? ? ? ? android:id="@+id/name"
? ? ? ? android:layout_width="fill_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:hint="@string/reminder"/>
? ? <Spinner
? ? ? ? android:id="@+id/dates"
? ? ? ? android:layout_width="0dp"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_below="@id/name"
? ? ? ? android:layout_alignParentLeft="true"
? ? ? ? android:layout_toLeftOf="@+id/times"
/>
? ? <Spinner
? ? ? ? android:id="@id/times"
? ? ? ? android:layout_width="96dp"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_below="@id/name"
? ? ? ? android:layout_alignParentRight="true"
/>
? ? <Button
? ? ? ? android:layout_width="96dp"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_below="@id/times"
? ? ? ? android:layout_alignParentRight="true"

? ? ? ? android:text="@string/done"/>
</RelativeLayout>

效果圖如下:


圖8

?

?

參考鏈接:

?

Android開發者Relative Layout

http://developer.android.com/guide/topics/ui/layout/relative.html

?

?

RelativeLayout相對布局

http://blog.sina.com.cn/s/blog_40797b1001010vwt.html

?

A06_RelativeLayout的屬性設置

http://blog.csdn.net/kehrwang/article/details/9041847

?

總結

以上是生活随笔為你收集整理的Android相对布局(RelativeLayout)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。