相对布局也就是设置两个控件的相对位置,先以常规方法设置第一个控件的位置,然后第二个控件就可以就第一个控件设置相对位置,而第三个控件更是有了两个参照物,可以任选其一。以此类推向外拓展
相关属性:
相对于父容器居中或对齐
layout_centerInParent 在父容器居中
layout_centerHorizontal 在父容器水平居中
layout_centerVertical 在父容器垂直居中
layout_alignParentLeft 与父容器左对齐
layout_alignParentRight 与父容器右对齐
layout_alignParentTop 与父容器顶对齐
layout_alignParentBottom 与父容器底对齐
相对于其它控件的位置
layout_toLeftOf 在……左边
layout_toRightOf 在……右边
layout_above 在……上面
layout_below 在……下面
相对于其它控件对齐
layout_alignLeft 与……左对齐
layout_alignRight 与……右对齐
layout_alignTop 与……顶对齐
layout_alignBottom 与……底对齐
layout_alignBaseLine 与……基线对齐
相对布局:输入姓名
效果

实现:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/text_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="姓名:"
android:textSize="25sp" />
<EditText
android:id="@+id/edi_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/text_Name"
android:layout_toRightOf="@id/text_Name"
android:ems="10"
android:hint="请输入姓名" />
<Button
android:id="@+id/btn_qd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/edi_Name"
android:layout_alignParentRight="true"
android:text="确定"
android:textSize="25sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="25sp"
android:layout_alignBaseline="@id/btn_qd"
android:layout_toLeftOf="@id/btn_qd"/>
</RelativeLayout>
相对布局:注册页面
效果:

实现:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:padding="20dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title"
android:textSize="35sp"
android:textColor="@android:color/holo_blue_dark"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username"
android:textSize="20sp"
android:layout_marginTop="100dp" />
<TextView
android:id="@+id/tvPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:textSize="20sp"
android:layout_below="@+id/tvName"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tvPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone"
android:textSize="20sp"
android:layout_below="@+id/tvPwd"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tvEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/email"
android:textSize="20sp"
android:layout_below="@+id/tvPhone"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tvSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sex"
android:textSize="20sp"
android:layout_below="@+id/tvEmail"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tvHobby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hobby"
android:textSize="20sp"
android:layout_below="@+id/tvSex"
android:layout_marginTop="10dp"/>
<EditText
android:id="@+id/edtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="12"
android:hint="@string/edtName"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/tvName"
android:layout_alignBaseline="@id/tvName"/>
<EditText
android:id="@+id/edtPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="12"
android:hint="@string/edtPwd"
android:inputType="numberPassword"
android:layout_below="@+id/edtName"
android:layout_alignLeft="@+id/edtName"
android:layout_alignBaseline="@id/tvPwd"/>
<EditText
android:id="@+id/edtPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="12"
android:hint="@string/edtPhone"
android:layout_below="@+id/edtPwd"
android:layout_alignLeft="@+id/edtPwd"
android:layout_alignBaseline="@id/tvPhone"/>
<EditText
android:id="@+id/edtEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="12"
android:hint="@string/edtEmail"
android:layout_below="@+id/edtPhone"
android:layout_alignLeft="@+id/edtPhone"
android:layout_alignBaseline="@id/tvEmail"/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edtEmail"
android:layout_alignLeft="@+id/edtEmail"
android:layout_alignBottom ="@+id/tvSex"
android:orientation="horizontal">
<RadioButton
android:id="@+id/btnMan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"/>
<RadioButton
android:id="@+id/btnWoman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
<LinearLayout
android:id="@+id/Checkbox"
android:layout_below="@+id/radioGroup"
android:layout_alignLeft="@+id/radioGroup"
android:layout_alignTop="@id/tvHobby"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/travel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旅行"/>
<CheckBox
android:id="@+id/music"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音乐"/>
<CheckBox
android:id="@+id/food"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="美食"/>
</LinearLayout>
<Button
android:id="@+id/btnSubmit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvHobby"
android:layout_marginTop="10dp"
android:onClick="doSubmit"
android:text="提交"/>
<Button
android:id="@+id/btnReset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btnSubmit"
android:layout_alignRight="@+id/edtEmail"
android:onClick="doReset"
android:text="重置"/>
</RelativeLayout>
ActivityMain.java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText edtName;
private EditText edtPwd;
private EditText edtPhone;
private EditText edtEmail;
private RadioGroup radioGroup;
private RadioButton btnMan;
private String sex = "男";
private CheckBox travel, music, food;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件实例
edtName = findViewById(R.id.edtName);
edtPwd = findViewById(R.id.edtPwd);
edtPhone = findViewById(R.id.edtPhone);
edtEmail = findViewById(R.id.edtEmail);
radioGroup = findViewById(R.id.radioGroup);
travel = findViewById(R.id.travel);
music = findViewById(R.id.music);
food = findViewById(R.id.food);
btnMan = findViewById(R.id.btnMan);
//单选按钮
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.btnMan:
sex = "男";
break;
case R.id.btnWoman:
sex = "女";
break;
}
}
});
}
public void doSubmit(View view) {
String text = "";
//获取复选框的值
if (travel.isChecked()) {
text += travel.getText().toString()+"\u00A0";
}
if (music.isChecked()) {
text += music.getText().toString()+"\u00A0";
}
if (food.isChecked()) {
text += food.getText().toString();
}
if (text == "") {
text = "无爱好";
}
//保存用户输入数据
String strName = edtName.getText().toString().trim();
String strPwd = edtPwd.getText().toString().trim();
String strPhone = edtPhone.getText().toString().trim();
String strEmail = edtEmail.getText().toString().trim();
//利用吐司提示用户注册情况
Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show();//LENGTH_SHORT表示登录时间长度
//创建显示意图
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
//创建数据包封装数据(封装)
Bundle date = new Bundle();
date.putString("name", strName);
date.putString("pwd", strPwd);
date.putString("phone", strPhone);
date.putString("email", strEmail);
date.putString("sex", sex);
date.putString("like", text);
//通过意图携带数据包
intent.putExtras(date);
//按照意图启动目标组件
startActivity(intent);
}
public void doReset(View view) {
//清空输入框
edtName.setText("");
edtPwd.setText("");
edtPhone.setText("");
edtEmail.setText("");
//单选按钮重置
btnMan.setChecked(true);
//清空复选框
travel.setChecked(false);
music.setChecked(false);
food.setChecked(false);
}
}
创建显示界面ActivityMain2.java


activity_main2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2">
<TextView
android:id="@+id/tvMessage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=""
android:textColor="@color/colorPrimaryDark"
android:textSize="25sp"/>
</LinearLayout>
ActivityMain2.java
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity2 extends AppCompatActivity {
protected TextView tvMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//通过资源标识符获取控件实例
tvMessage = findViewById(R.id.tvMessage);
//获取意图
Intent intent = getIntent();
//判断意图是否为空
if (intent != null) {
//获取意图携带数据包(封装)
Bundle date = intent.getExtras();
String strName = date.getString("name");
String strPwd = date.getString("pwd");
String strPhone = date.getString("phone");
String strEmail = date.getString("email");
String sex = date.getString("sex");
String text = date.getString("like");
//拼接用户信息
String message = "注册成功!\n用户名:" + strName + "\n密码:" + strPwd + "\n电话:"
+ strPhone + "\n邮箱:" + strEmail+"\n性别:"+sex+"\n爱好:"+text;
//设置标签属性,显示用户信息
tvMessage.setText(message);
}
}
}
string.xml
<resources>
<string name="app_name">相对布局</string>
<string name="title">请输入注册信息</string>
<string name="username">用户名:</string>
<string name="password">密码:</string>
<string name="phone">电话:</string>
<string name="email">邮箱:</string>
<string name="sex">性别:</string>
<string name="hobby">爱好:</string>
<string name="edtName">请输入用户名</string>
<string name="edtPwd">请输入密码</string>
<string name="edtPhone">请输入电话号码</string>
<string name="edtEmail">请输入电子邮箱</string>
</resources>
1254

被折叠的 条评论
为什么被折叠?



