1.先在activity_main中通过空间把大致内容布局好
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@drawable/register_bg"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"
android:textSize="50dp"
android:textColor="#fff"
android:gravity="center"
android:background="@color/colorBg"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
>
<ImageView
android:layout_marginTop="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/qq_icon"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="用QQ注册"
android:textColor="#fff"
android:textSize="20dp"
android:gravity="center"
/>
</LinearLayout>
<View style="@style/vLine"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
>
<ImageView
android:layout_marginTop="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/weixin_icon"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="用微信注册"
android:textColor="#fff"
android:textSize="20dp"
android:gravity="center"
/>
</LinearLayout>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:padding="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/email_icon"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="使用电子邮箱注册"
android:textColor="#fff"
android:textSize="20dp"
android:gravity="center"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="名字"
/>
<EditText
android:id="@+id/name"
style="@style/et"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="邮箱"
/>
<EditText
android:id="@+id/emile"
style="@style/et"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="密码"
/>
<EditText
style="@style/et"
android:inputType="textPassword"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="性别"
/>
<RadioGroup
android:id="@+id/sex"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="50dp"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/boy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:textSize="20dp"
android:textColor="#fff"
/>
<RadioButton
android:id="@+id/girl"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:textSize="20dp"
android:textColor="#fff"
/>
</RadioGroup>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="兴趣爱好"
/>
<CheckBox
android:id="@+id/sing"
android:layout_marginLeft="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="唱歌"
android:textSize="20dp"
android:textColor="#fff"
/>
<CheckBox
android:id="@+id/dance"
android:layout_marginLeft="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳舞"
android:textSize="20dp"
android:textColor="#fff"
/>
<CheckBox
android:id="@+id/read"
android:layout_marginLeft="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读书"
android:textSize="20dp"
android:textColor="#fff"
/>
</LinearLayout>
<View style="@style/hLine"/>
</LinearLayout>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/colorBt"
android:text="提交"
android:textColor="#fff"
android:textSize="30dp"
android:layout_alignParentBottom="true"
android:paddingBottom="15dp"
/>
</RelativeLayout>
2.新建xml布局点击提交按钮后出现的布局,但在这里,我把性别和兴趣爱好的输出框都用EditText,因为个人觉得EditText.get和set方法比较简单
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/constraintlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="你的登录信息"
android:gravity="center"
android:textSize="40dp"
android:textColor="#fff"
/>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="名字"
/>
<EditText
android:id="@+id/name_dialog"
style="@style/et"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="邮箱"
/>
<EditText
android:id="@+id/emile_dialog"
style="@style/et"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="性别"
/>
<EditText
android:id="@+id/sex_dialog"
style="@style/et"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
>
<TextView
style="@style/tv"
android:text="兴趣爱好"
/>
<EditText
android:id="@+id/hobby_dialog"
style="@style/et"
/>
</LinearLayout>
<View style="@style/hLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="取消"
android:textSize="20dp"
android:background="@color/colorBt"
android:textColor="#fff"
/>
<Button
android:id="@+id/ok"
android:layout_marginLeft="40dp"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="登录"
android:textSize="20dp"
android:background="@color/colorBt"
android:textColor="#fff"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
3.在MainActivity中写事件,实现提交Button控件和复选框CheckBox控件的点击事件,之前一直无法实现兴趣爱好的输出,因为我把hobby_dialog.setText(hobby);写在了CheckBox点击事件中,事实上,我们只需要先用一个全局变量hobby把将所选内容保存下来,在点击按钮的时候,在将hobby中的内容放到hobby_dialog中输出。
package com.example.myapplication;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioGroup;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
EditText name,emile,hobby_dialog;
private String sexfinally,hobby;
CheckBox sing,dance,read;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hobby=new String();
name=this.findViewById(R.id.name);
emile=this.findViewById(R.id.emile);
sing=this.findViewById(R.id.sing);
dance=this.findViewById(R.id.dance);
read=this.findViewById(R.id.read);
sing.setOnCheckedChangeListener(this);
dance.setOnCheckedChangeListener(this);
read.setOnCheckedChangeListener(this);
RadioGroup sex=this.findViewById(R.id.sex);
sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.boy:
sexfinally="男";
break;
case R.id.girl:
sexfinally="女";
break;
}
}
});
Button button=this.findViewById(R.id.btn);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 1.创建构造器
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
// 2.获取对话框布局
//三个参数,第一个上下文,第二个:设置的布局文件 第三个:给view指定容器
View view_dialog=View.inflate(this,R.layout.layout_dialog,null);
// 3.设置对话框布局
builder.setView(view_dialog);
// 4.创建对话框
final AlertDialog dialog=builder.create();
// 5.设置取消,确定按钮
EditText name_dialog=view_dialog.findViewById(R.id.name_dialog);
EditText emile_dialog=view_dialog.findViewById(R.id.emile_dialog);
EditText sex_dialog=view_dialog.findViewById(R.id.sex_dialog);
hobby_dialog=view_dialog.findViewById(R.id.hobby_dialog);
hobby_dialog.setText(hobby);
String namest=name.getText().toString();
String emilest=emile.getText().toString();
name_dialog.setText(namest);
emile_dialog.setText(emilest);
sex_dialog.setText(sexfinally);
Button btn_cannel=view_dialog.findViewById(R.id.cancel);
btn_cannel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Button btn_ok=view_dialog.findViewById(R.id.ok);
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
MainActivity.this.finish();
}
});
// 6.显示对话框
dialog.show();
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
String change=buttonView.getText().toString();
if(isChecked) {
if(!hobby.contains(change)) {
hobby=hobby+change;
}
} else {
if (hobby.contains(change)) {
hobby=hobby.replace(change,"");
}
//
}
}
}
4.相关的style和图片
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="hLine">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:background">#fff</item>
</style>
<style name="vLine">
<item name="android:layout_width">1dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">#fff</item>
</style>
<style name="tv">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">15dp</item>
<item name="android:textColor">#fff</item>
<item name="android:textSize">25dp</item>
</style>
<style name="et">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">20dp</item>
<item name="android:textColor">#fff</item>
</style>
</resources>
因为我也是初学者,如果大家觉得代码有错误、有更好的方法或者有疑问都可以评论出来,咱们一起讨论讨论。