2016年6月27日 星期一

Android中padding與layout_margin的區別與用法

   林炳文Evankaka原創作品。轉載請注明出處http://blog.csdn.net/evankaka

 一、定義   

        android:layout_margin就是設置view的上下左右邊框的額外空間
        android:padding是設置內容相對view的邊框的距離
        padding,含義為“填充”,像墊肩壓類似的填充物,一個控制項的padding及此控制項內部的填充,由此可見padding是以所被定義的控制項Aparent控制項,而內部的內容物與控制項A的間距。而layout_marginA控制項所在的控制項為parent控制項,是A與其的間距。
        其實概念很簡單,padding是站在父view的角度描述問題,它規定它裡面的內容必須與這個父view邊界的距離。margin則是站在自己的角度描述問題,規定自己和其他(上下左右)的view之間的距離,如果同一級只有一個view,那麼它的效果基本上就和padding一樣了
http://img.blog.csdn.net/20150303131301841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZhbmtha2E=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
1.  當按鈕分別設置以上兩個屬性時,得到的效果是不一樣的。  
2.  android:paddingLeft="30px"  
3.  按鈕上設置的內容(例如圖片)離按鈕左邊邊界30個圖元  
4.  android:layout_marginLeft="30px"  
5.  整個按鈕離左邊設置的內容30個圖元  



二、使用示例

1、兩個都不加
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
1.  xml version="1.0" encoding="utf-8"?>  
2.  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
3.      android:layout_width="match_parent"  
4.      android:layout_height="match_parent"  
5.      android:background="#ffffff" >  
6.    
7.      <TextView  
8.          android:layout_width="100dip"  
9.          android:layout_height="100dip"  
10.          android:background="#000000"  
11.         android:text="Hello" />  
12.   
13. </RelativeLayout>  
效果:
http://img.blog.csdn.net/20150303132257741?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZhbmtha2E=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

2、只加padding
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
1.  xml version="1.0" encoding="utf-8"?>  
2.  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
3.      android:layout_width="match_parent"  
4.      android:layout_height="match_parent"  
5.       android:padding ="100dip"  
6.      android:background="#ffffff" >  
7.    
8.      <TextView  
9.          android:layout_width="100dip"  
10.         android:layout_height="100dip"  
11.          android:background="#000000"  
12.         android:text="Hello" />  
13.   
14. </RelativeLayout>  
效果:
http://img.blog.csdn.net/20150303132407088?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZhbmtha2E=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
3、只加margin
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
1.  xml version="1.0" encoding="utf-8"?>  
2.  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
3.      android:layout_width="match_parent"  
4.      android:layout_height="match_parent"  
5.      android:background="#ffffff" >  
6.    
7.      <TextView  
8.          android:layout_width="100dip"  
9.          android:layout_height="100dip"  
10.          android:background="#000000"  
11.          android:layout_margin="30dip"  
12.         android:text="Hello" />  
13.   
14. </RelativeLayout>  
效果:
http://img.blog.csdn.net/20150303132606979?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZhbmtha2E=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

三、注意說明

        LinearLayoutRelativeLayoutTableLayout中,這2個屬性都是設置都是有效的
        FrameLayout中,android:layout_margin是無效的,因為FrameLayout裡面的元素都是從左上角開始繪製的
        AbsoluteLayout中,沒有android:layout_margin屬性
        在此提醒,xml參數中含有layout的參數專案為定義的控制項相對于parent的關聯,沒有的一般為本身的定義,以上內容與此相符。又類似於gravitylayout_gravity,layout的是相對於parent的大體位置,而不帶的是自身內部內容的大體位置。

   林炳文Evankaka原創作品。轉載請注明出處http://blog.csdn.net/evankaka