先看程序效果(图):
图一
图二
两个布局文件main.xml 和 anotheractivity.xml
android:layout_above="@id/XXX" “本控件位于XXX控件上面”
android:layout_toLeftOf="@id/XXX" “本控件位于XXX控件的左边”
android:layout_alignTop="@id/XXX" “本控件的顶部和XXX控件的顶部对齐,即这个控件的顶部和XXX控件的顶部在同一行”
android:layout_alignParentLeft="true" “本控件的左边是其父控件左边对齐,即这个控件向左靠齐它的父控件”
android:layout_marginRight="5dip" “本控件的右边和它相邻的控件的左边或父控件的右边相隔5dip”
常用单位
dip:Density-independent Pixels - an abstract unit that is based on the physical density of the screen.
pt :Points - 1/72 of an inch based on the physical size of the screen.
px :Pixels - corresponds to actual pixels on the screen. Not recommended.
<?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">
<TextView
android:id="@+id/emailTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="25dip"
android:layout_alignParentTop="true"
android:textStyle="bold"
android:text="电子邮箱:"/>
<EditText
android:id="@+id/emailEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="1dip"
android:layout_below="@id/emailTextView"
android:text="\@"/>
<TextView
android:id="@+id/accountTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="5dip"
android:layout_below="@id/emailEditText"
android:textStyle="bold"
android:text="账号:"/>
<EditText
android:id="@+id/accoutEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="1dip"
android:layout_below="@id/accountTextView"/>
<TextView
android:id="@+id/passwordTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="5dip"
android:layout_below="@id/accoutEditText"
android:textStyle="bold"
android:text="输入密码:"/>
<EditText
android:id="@+id/passwordEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="1dip"
android:password="true"
android:layout_below="@id/passwordTextView"/>
<TextView
android:id="@+id/password2TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="5dip"
android:layout_below="@id/passwordEditText"
android:textStyle="bold"
android:text="确认密码:"/>
<EditText
android:id="@+id/password2EditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="1dip"
android:password="true"
android:layout_below="@id/password2TextView"/>
<Button
android:id="@+id/nextButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:layout_marginBottom="5dip"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:textStyle="bold"
android:text="下一步"/>
</RelativeLayout>
<?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">
<TextView
android:id="@+id/nameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="25dip"
android:layout_alignParentTop="true"
android:textStyle="bold"
android:text="真实姓名:"/>
<EditText
android:id="@+id/nameEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="1dip"
android:layout_below="@id/nameTextView"
android:text=""/>
<TextView
android:id="@+id/certificationTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="5dip"
android:textStyle="bold"
android:layout_below="@id/nameEditText"
android:text="证件类型:"/>
<Spinner
android:id="@+id/certificationSpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="1dip"
android:layout_marginRight="5dip"
android:prompt="@string/certification_promt"
android:layout_below="@id/certificationTextView"/>
<TextView
android:id="@+id/certificationNumTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="5dip"
android:layout_below="@id/certificationSpinner"
android:text="证件号码:"/>
<EditText
android:id="@+id/certificationNumEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="1dip"
android:layout_below="@id/certificationNumTextView"
android:text=""/>
<Button
android:id="@+id/previousButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:layout_marginBottom="5dip"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:textStyle="bold"
android:text="上一步"/>
<Button
android:id="@+id/registerButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:layout_marginBottom="5dip"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:textStyle="bold"
android:text="注册"/>
</RelativeLayout>
两个activity,RelativeLayoutActivity.java和AnotherActivity.java
package com.zeph.android.relativelayout;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class RelativeLayoutActivity extends Activity {
private Button nextButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nextButton = (Button) findViewById(R.id.nextButton);
nextButton.setOnClickListener(new NextButtonOnClickListener());
}
class NextButtonOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(RelativeLayoutActivity.this, AnotherActivity.class);
startActivity(intent);
finish();
}
}
}
package com.zeph.android.relativelayout;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
public class AnotherActivity extends Activity {
private Spinner certificationSpinner;
private Button previousButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.anotheractivity);
certificationSpinner = (Spinner) findViewById(R.id.certificationSpinner);
previousButton = (Button) findViewById(R.id.previousButton);
/*
* createFromResource方法创建一个ArrayAdapter对象,它将StringArray中每一项都绑定到Spinner上面。
* 这就是如何将数据显示到Spinner上面的方法。R.layout.simple_spinner_item是一个Spinner的标准布局。
* 也就是弹出来的整个选项框的布局方式。
*/
ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(AnotherActivity.this,
R.array.certification_array,android.R.layout.simple_spinner_item);
//设置选项框打开后,其中每一项的显示方式(外形,样子)。
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
certificationSpinner.setAdapter(spinnerAdapter);
//给Spinner设置监听器
certificationSpinner.setOnItemSelectedListener(new CertificationOnItemSelectedListener());
previousButton.setOnClickListener(new PreviousButtonOnClickListener());
}
class CertificationOnItemSelectedListener implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position,
long id) {
// TODO Auto-generated method stub
String []str = {"军官证","身份证"};
Toast.makeText(AnotherActivity.this,"您选择的是:"+str[position],Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
class PreviousButtonOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(AnotherActivity.this, RelativeLayoutActivity.class);
startActivity(intent);
finish();
}
}
}
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, RelativeLayoutActivity!</string>
<string name="app_name">RelativeLayout</string>
<string-array name="certification_array">
<item>军官证</item>
<item>身份证</item>
</string-array>
<string name="certification_promt">选择证件类型</string>
</resources>
记得两个activity,要在Manifest里面注册