Android 自学之相对布局 RelativeLayout

相对布局(RelativeLayout),相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的。

RelativeLayout的XML属性及相关方法说明

XML属性 相关方法 说明
android:gravity setGravity(int) 设置该布局容器内部各子组件的对齐方式
android:ignoreGravity setIgnoreGravity(int) 设置那个组件不受Gravity的影响

 

 

 

RelativeLayout.LayoutParams里只能设为boolean值的属性:

  android:layout_centerHrizontal 水平居中
  android:layout_centerVertical 垂直居中
  android:layout_centerInparent 相对于父元素完全居中
  android:layout_alignParentBottom 贴紧父元素的下边缘
  android:layout_alignParentLeft 贴紧父元素的左边缘
  android:layout_alignParentRight 贴紧父元素的右边缘
  android:layout_alignParentTop 贴紧父元素的上边缘
  android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

RelativeLayout.LayoutParams里只能设为其他UI组件ID的属性:

android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

除了这些,RelativeLayout.LayoutParams还继承了android.view.ViewGroup.MarginLayoutParams,所以RelativeLayout布局容器中每个组件也可以指定android.view.ViewGroup.MarginLayoutParams所支持的XML属性。

下面有个用相对布局编写的范例:

layout/main.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:layout_width="fill_parent"

 4     android:layout_height="fill_parent">

 5     

 6     <!-- 定义该组件位于父容器中间 -->    

 7     <TextView android:id="@+id/view01"

 8         android:layout_width="wrap_content"

 9         android:layout_height="wrap_content"

10         android:background="@drawable/leaf"

11         android:layout_centerInParent="true"/><!-- 组件居中:android:layout_centerInParent="true" -->

12     

13     <!-- 定义该组件位于view01组件的上方 -->

14     <TextView 

15         android:id="@+id/view02"

16         android:layout_width="wrap_content" 

17         android:layout_height="wrap_content" 

18         android:background="@drawable/leaf"

19         android:layout_above="@id/view01"  

20         android:layout_alignLeft="@id/view01"

21         />

22     <!-- 定义该组件位于view01组件的下方 -->

23     <TextView 

24         android:id="@+id/view03"

25         android:layout_width="wrap_content" 

26         android:layout_height="wrap_content" 

27         android:background="@drawable/leaf"

28         android:layout_below="@id/view01"

29         android:layout_alignLeft="@id/view01"

30         />

31     <!-- 定义该组件位于view01组件的左边 -->

32     <TextView 

33         android:id="@+id/view04"

34         android:layout_width="wrap_content" 

35         android:layout_height="wrap_content" 

36         android:background="@drawable/leaf"

37         android:layout_toLeftOf="@id/view01"

38         android:layout_alignTop="@id/view01"

39         />

40     <!-- 定义该组件位于view01组件的右边 -->

41     <TextView 

42         android:id="@+id/view05"

43         android:layout_width="wrap_content" 

44         android:layout_height="wrap_content" 

45         android:background="@drawable/leaf"

46         android:layout_toRightOf="@id/view01"

47         android:layout_alignTop="@id/view01"

48         />        

49         

50 </RelativeLayout>

com.example.relativelayouttest.MainActivity.java主程序

package com.example.relativelayouttest;



import android.support.v7.app.ActionBarActivity;

import android.support.v7.app.ActionBar;

import android.support.v4.app.Fragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.os.Build;



public class MainActivity extends ActionBarActivity {



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
//setPadding相当于css里面的padding findViewById(R.id.view01).setPadding(
5, 5 , 5 , 5); findViewById(R.id.view02).setPadding(5, 5 , 5 , 5); findViewById(R.id.view03).setPadding(5, 5 , 5 , 5); findViewById(R.id.view04).setPadding(5, 5 , 5 , 5); findViewById(R.id.view05).setPadding(5, 5 , 5 , 5); } }

 

你可能感兴趣的:(RelativeLayout)