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); } }

 

posted on 2014-05-22 15:46  杨_静  阅读(341)  评论(0编辑  收藏  举报

导航