最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RelativeLayout(相對布局)用法實(shí)例講解

 更新時間:2019年02月21日 11:14:10   投稿:laozhang  
在本文里小編給大家分享了關(guān)于RelativeLayout(相對布局)用法知識點(diǎn)以及對應(yīng)的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。

本節(jié)引言

LinearLayout也是我們用的比較多的一個布局,我們更多的時候更鐘情于他的weight(權(quán)重)屬性,等比例劃分,對屏幕適配還是幫助蠻大的;但是使用LinearLayout的時候也有一個問題,就是當(dāng)界面比較復(fù)雜的時候,需要嵌套多層的 LinearLayout,這樣就會降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率會更低,另外太多層LinearLayout嵌套會占用更多的系統(tǒng)資源,還有可能引發(fā)stackoverflow; 但是如果我們使用RelativeLayout的話,可能僅僅需要一層就可以完成了,以父容器或者兄弟組件參考+margin +padding就可以設(shè)置組件的顯示位置,是比較方便的!當(dāng)然,也不是絕對的,具體問題具體分析吧! 總結(jié)就是:盡量使用RelativeLayout + LinearLayout的weight屬性搭配使用吧!

核心屬性圖

2.父容器定位屬性示意圖

3.根據(jù)兄弟組件定位

恩,先說下什么是兄弟組件吧,所謂的兄弟組件就是處于同一層次容器的組件,如圖

圖中的組件1,2就是兄弟組件了,而組件3與組件1或組件2并不是兄弟組件,所以組件3不能通過組件1或2來進(jìn)行定位,比如layout_toleftof = "組件1"這樣是會報錯的!切記!關(guān)于這個兄弟組件定位的最經(jīng)典例子就是"梅花布局"了,下面代碼實(shí)現(xiàn)下:

運(yùn)行效果圖:

實(shí)現(xiàn)代碼:

<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>

4.margin與padding的區(qū)別

初學(xué)者對于這兩個屬性可能會有一點(diǎn)混淆,這里區(qū)分下:首先margin代表的是偏移,比如marginleft = "5dp"表示組件離容器左邊緣偏移5dp; 而padding代表的則是填充,而填充的對象針對的是組件中的元素,比如TextView中的文字比如為TextView設(shè)置paddingleft = "5dp",則是在組件里的元素的左邊填充5dp的空間! margin針對的是容器中的組件,而padding針對的是組件中的元素,要區(qū)分開來!下面通過簡單的代碼演示兩者的區(qū)別:

比較示例代碼如下:

<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> 

運(yùn)行效果圖比較:

5.很常用的一點(diǎn):margin可以設(shè)置為負(fù)數(shù)

相信很多朋友都不知道一點(diǎn)吧,平時我們設(shè)置margin的時候都習(xí)慣了是正數(shù)的, 其實(shí)是可以用負(fù)數(shù)的,下面寫個簡單的程序演示下吧,模擬進(jìn)入軟件后,彈出廣告頁面的,右上角的cancle按鈕的margin則是使用負(fù)數(shù)的!

效果圖如下:

此處輸入圖片的描述

貼出的廣告Activity的布局代碼吧,當(dāng)然,如果你對這個有興趣的話可以下下demo, 因?yàn)閮H僅是實(shí)現(xiàn)效果,所以代碼會有些粗糙!

<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" 
  tools:context="com.jay.example.relativelayoutdemo.MainActivity"  
  android:background="#00CCCCFF"> 
 
  <ImageView 
    android:id="@+id/imgBack" 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_centerInParent="true" 
    android:background="@drawable/myicon" /> 
 
  <ImageView 
    android:id="@+id/imgCancle" 
    android:layout_width="28dp" 
    android:layout_height="28dp" 
    android:layout_alignRight="@id/imgBack" 
    android:layout_alignTop="@id/imgBack" 
    android:background="@drawable/cancel" 
    android:layout_marginTop="-15dp" 
    android:layout_marginRight="-10dp" /> 
 
</RelativeLayout> 

相關(guān)文章

最新評論

宜川县| 昭平县| 台东县| 惠东县| 泽州县| 临沂市| 南木林县| 西充县| 精河县| 清水河县| 宁陵县| 米易县| 自治县| 县级市| 揭西县| 通许县| 云霄县| 葫芦岛市| 萨嘎县| 泽普县| 金川县| 会理县| 叙永县| 崇仁县| 长葛市| 淮北市| 洪洞县| 双流县| 兴城市| 青海省| 岚皋县| 南阳市| 彭水| 贺兰县| 平舆县| 教育| 崇州市| 新巴尔虎右旗| 进贤县| 永寿县| 平湖市|