布局管理器 4----- 相对布局

相对布局由RelativeLayout代表,相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的,因此这种布局方式被称为相对布局。

如果A组件的位置是由B组件的位置来决定的,Android要求先定义B组件,再定义A组件。

ReletiveLayout可支持如下表的XML属性

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

为了控制该布局容器中各个子部件的布局分布,ReletiveLayout提供了一个内部类:ReletiveLayout.LayoutParams,该类提供了大量的XML属性来控制RelativeLayout布局容器中子组件的布局分布。

ReletiveLayout.LayoutParams里只能设为true、false的XML属性如下表所示

 属性 说明 
 android:layout_centerHorizontal  控制该子组件是否位于布局容器的水平居中位置
 android:layout_centerVertical  控制该子组件是否位于布局容器的垂直居中位置
 android:layout_centerInParent  控制该子组件是否位于布局容器的中央位置
 android:layout_alignParentBottom  控制该子组件是否与布局容器底端对齐
 android:layout_alignParentLeft  控制该子组件是否与布局容器左边对齐
 android:layout_alignParentRight  控制该子组件是否与布局容器右边对齐
 android:layout_alignParentTop  控制该子组件是否与布局容器顶端对齐

 

ReletiveLayout.LayoutParams 里属性值为其他UI组件ID的XML属性如下表所示。

属性  说明
android:layout_toRightOf  控制该子组件位于给出ID组件的右侧
android:layout_toLeftOf  控制该子组件位于给出ID组件的左侧
android:layout_above  控制该子组件位于给出ID组件的上方
android:layout_below  控制该子组件位于给出ID组件的下方
android:layout_alignTop  控制该子组件位于给出ID组件的上边界对齐
android:layout_alignBottom  控制该子组件位于给出ID组件的下边界对齐
android:layout_alignLeft  控制该子组件位于给出ID组件的左边界对齐
android:layout_alignRight  控制该子组件位于给出ID组件的右边界对齐

梅花布局效果

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/View01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/leaf" 
        android:layout_centerInParent="true"/>

    <TextView
        android:id="@+id/View02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/leaf" 
        android:layout_above="@id/View01"
        android:layout_alignLeft="@id/View01"/>

    <TextView
        android:id="@+id/View03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/leaf" 
        android:layout_below="@id/View01"
        android:layout_alignLeft="@id/View01"/>

    <TextView
        android:id="@+id/View04"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/leaf"
        android:layout_toLeftOf="@id/View01"
        android:layout_alignTop="@id/View01" />

    <TextView
        android:id="@+id/View05"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/leaf" 
        android:layout_toRightOf="@id/View01"
        android:layout_alignTop="@id/View01" />

</RelativeLayout>

java代码

package com.example.helloworld;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class FrameLayoutTest extends Activity{
	private int currentColor=0;
	final int[]colors=new int[]{
			R.color.color7,
			R.color.color6,
			R.color.color5,
			R.color.color4,
			R.color.color3,
			R.color.color2,
			R.color.color1,
	};

	TextView[] views=new TextView[7];
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		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);

	}
}

 

你可能感兴趣的:(布局管理器,相对布局,4-----,梅花布局效果)