android佈局------RelativeLayout(相對佈局)詳解
http://blog.csdn.net/coder_pig/article/details/21185659
RelativeLayout(相對佈局)
前言
和線性佈局(LinearLayout)一樣,RelaiveLayout相對佈局也是我們用的比較多的一個佈局之一
好的程式設計建議:
合理地利用好LinearLayout的weight權重屬性和RelativeLayout相對佈局,可以解決螢幕解析度不同的自適應問題!
相對,顧名思義是有參照的,就是以某個兄弟元件,或者父容器來決定的
比如小明在上學的路上,此時他的位置可以用離家多少米或者是離學校多少米表示,就是利用不同的參照物
記得啊!!!兄弟元件是在一個同一個佈局裡面的元件,如果是佈局裡一個元件參照另一個佈局裡的元件會出錯的!!
好了,廢話不多說,直接說比較常用的屬性吧:
設定佈局裡面所有元件的對其方式:
android:gravity:設定容器內各個子元件的對齊方式
android:ignoreGravity:如果為哪個元件設定了這個屬性的話,那麼該元件不受gravity屬性的影響
根據父容器來定位:
想位於哪,哪個屬性就設定為true
左對齊:android:layout_alighParentLeft
右對齊:android:layout_alighParentRight
頂端對齊:android:layout_alighParentTop
底部對齊:android:layout_alighParentBottom
水平居中:android:layout_centerHorizontal
垂直居中:android:layout_centerVertical
中央位置:android:layout_centerInParent
比較簡單,就不給出程式碼了,畫個草圖幫助大家瞭解下
o(╯□╰)o,畫工略渣,體諒下,不過大家應該能體會我想表達什麼意思的...
根據兄弟元件來定位
右面的屬性值為兄弟元件的id
左邊:android:layout_toLeftOf
右邊:android:layout_toRightOf
上方:android:layout_above
下方:android:layout_below
對齊上邊界:android:layout_alignTop
對齊下邊界:android:layout_alignBottom
對齊左邊界:android:layout_alignLeft
對齊右邊界:android:layout_alignRight
這裡演示一個比較典型的例子:
梅花布局:
程式碼如下:
- <span style="font-family:Comic Sans MS;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/RelativeLayout1"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <!-- 這個是在容器中央的 -->
- <ImageView
- android:id="@+id/img1"
- android:layout_width="80dp"
- android:layout_height="80dp"
- android:layout_centerInParent="true"
- android:src="@drawable/pic1"
- />
- <!-- 在中間圖片的左邊 -->
- <ImageView
- android:id="@+id/img2"
- android:layout_width="80dp"
- android:layout_height="80dp"
- android:layout_toLeftOf="@id/img1"
- android:layout_centerVertical="true"
- android:src="@drawable/pic2"
- />
- <!-- 在中間圖片的右邊 -->
- <ImageView
- android:id="@+id/img3"
- android:layout_width="80dp"
- android:layout_height="80dp"
- android:layout_toRightOf="@id/img1"
- android:layout_centerVertical="true"
- android:src="@drawable/pic3"
- />
- <!-- 在中間圖片的上面-->
- <ImageView
- android:id="@+id/img4"
- android:layout_width="80dp"
- android:layout_height="80dp"
- android:layout_above="@id/img1"
- android:layout_centerHorizontal="true"
- android:src="@drawable/pic4"
- />
- <!-- 在中間圖片的下面 -->
- <ImageView
- android:id="@+id/img5"
- android:layout_width="80dp"
- android:layout_height="80dp"
- android:layout_below="@id/img1"
- android:layout_centerHorizontal="true"
- android:src="@drawable/pic5"
- />
- </RelativeLayout>
- </span>
這個很簡單,讀者慢慢摸索下就懂了
最後還有兩個比較常用的
Margin和Padding屬性
Margin:設定元件與父容器(通常是佈局)的邊距
有以下五個
android:layout_margin: 指定控制元件的四周的外部留出一定的邊距
android:layout_marginLeft: 指定控制元件的左邊的外部留出一定的邊距
android:layout_marginTop: 指定控制元件的上邊的外部留出一定的邊距
android:layout_marginRight: 指定控制元件的右邊的外部留出一定的邊距
android:layout_marginBottom: 指定控制元件的下邊的外部留出一定的邊距
Padding:設定元件內部元素間的邊距(可以理解為填充)
也是有以下五個
android:padding :指定控制元件的四周的內部留出一定的邊距
android:paddingLeft: 指定控制元件的左邊的內部留出一定的邊距
android:paddingTop: 指定控制元件的上邊的內部留出一定的邊距
android:paddingRight: 指定控制元件的右邊的內部留出一定的邊距
android:paddingBottom: 指定控制元件的下邊的內部留出一定的邊距
這兩個後面都跟著一個引數,通常用dp作為單位,eg:android:margin = "10dp"
用法比較簡單,這裡就誇張地演示下分別使用兩個的效果
效果圖如下:
貼下程式碼:
- <span style="font-family:Comic Sans MS;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".MainActivity" >
- <Button
- android:id="@+id/btn1"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="Button"
- />
- <Button
- android:paddingLeft="100dp"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="Button"
- android:layout_toRightOf="@id/btn1"
- />
- <Button
- android:id="@+id/btn2"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="Button"
- android:layout_alignParentBottom="true"
- />
- <Button
- android:layout_marginLeft="100dp"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="Button"
- android:layout_toRightOf="@id/btn2"
- android:layout_alignParentBottom="true"
- />
- </RelativeLayout></span>
程式碼解釋:
這個程式碼很簡單,就是寫了兩個按鈕的組合,
第一個組合的第二個按鈕設定了paddingleft = "100dp:,結果按鈕被拉伸了100dp,因為裡面的元素間距填充了100dp
第二個組合的第二個按鈕設定了marginleft = "100dp",結果按鈕向右平移了100dp
總結:
以上就是RelativeLayout相對佈局的常用屬性,如果紕漏
望讀者指出,O(∩_∩)O謝謝!
多摸索摸索這些屬性就熟悉了!
相關文章
- Android入門教程 | UI佈局之RelativeLayout 相對佈局AndroidUI
- Android 相對佈局RelativeLayout 程式碼示例Android
- Android FlexboxLayout 佈局詳解AndroidFlex
- DependentLayout相對佈局
- Flutter 佈局詳解Flutter
- Android 佈局Android
- Flutter佈局篇(1)–水平和垂直佈局詳解Flutter
- Flutter佈局篇(1)--水平和垂直佈局詳解Flutter
- Android 約束佈局(ConstraintLayout)1.1.0 版詳解AndroidAI
- Flutter學習之”相對佈局“Flutter
- Android中常見的佈局和佈局引數Android
- 詳解RecyclerView的預佈局View
- 詳解CSS的Flex佈局CSSFlex
- Flutter Container Widget 佈局詳解FlutterAI
- Flutter 佈局(一)- Container詳解FlutterAI
- Android學習—— Android佈局Android
- Android 佈局優化Android優化
- android --巧用 flexboxLayout 佈局AndroidFlex
- css佈局-float佈局CSS
- CSS佈局 --- 居中佈局CSS
- Android入門教程 | UI佈局之LinearLayout 線性佈局AndroidUI
- Flutter系列之Flex佈局詳解FlutterFlex
- iOS自動佈局——Masonry詳解iOS
- CSS例項詳解:Flex佈局CSSFlex
- Flutter 佈局(七)- Row、Column詳解Flutter
- java:佈局方法(流佈局)Java
- qt 佈局---表單佈局QT
- 居中佈局、三欄佈局
- Flutter佈局——Flex、FittedBox、Stack、Container佈局教程【超詳細】FlutterFlexAI
- 寫給 Android 開發的小程式佈局指南,Flex 佈局!AndroidFlex
- CSS 佈局之水平居中佈局CSS
- 彈性佈局(伸縮佈局)
- 浮動佈局 和 flex佈局Flex
- CSS佈局之三欄佈局CSS
- CSS佈局 --- 自適應佈局CSS
- CSS佈局 --- 等寬&等高佈局CSS
- React Native 探索(四)Flexbox 佈局詳解React NativeFlex
- Flutter 佈局(九)- Flow、Table、Wrap詳解Flutter
- Flutter佈局詳解,必知必會Flutter