Aim :
1. 用户名和密码使用EditText;
2. 所在地区使用Spinner控件,供用户选择所在的省份;
3. 出生日期:用户单击输入框时,弹出DatePickerDialog,将用户设置的日期显示在EditText中;
4. E-mail使用AutoCompleteTextView控件。
5. 当用户点击注册按钮时,弹出列表对话框,显示用户输入的信息,供用户进行确认。
Review :
DatePickerDialog : 日期选择对话框,相应的有 时间选择对话框TimePickerDialog , 用法:
1. 通过New关键字创建DatePickerDialog、TimePickerDialog实例,调用它们的show()方法即可将日期和时间选择对话框显示出来;
2. 为DatePickerDialog、TimePickerDialog绑定监听器,可以保证用户通过DatePickerDialog、TimePickerDialog设置时间时触发监听器,从而通过监听器来获取用户设置的事件;
AlertDialog : 可以生成各种内容的对话框,可分为4个区域:图标区、标题区、内容区、按钮区;
创建AlertDialog的步骤:
1. 创建AlertDialog对象;
2. 调用AlertDialog.Builder的setTitle()、setCustomTitle()、setIcon()、setMessage()、setItems()等方法设置标题、图标、对话框内容;
3. 调用AlertDialog.Builder的setPositiveButton()、setNegativeButton等方法添加多个按钮;
4. 调用create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来;
对话框内容使用有如下方法:
setMessage() : 设置对话内容为简单文本内容;
setItems() : 设置对话框内容为简单列表项;
setSingleChoiceItems() : 设置对话框内容为单选列表项
setMultiChoiceItems() : 设置对话框内容为多选列表项
setAdapter() : 设置对话框内容为自定义列表项
setView() : 设置对话框内容为自定义View
Structure:
主要还是MainActivity.java和activity_main.xml两个文件;
Code:
MainActivity.java
package com.example.bestone.test4_2;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private EditText birthday;
private AutoCompleteTextView email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner)findViewById(R.id.spinner); //获取界面布局中的Spinner组件
String[] arr = { "北京", "浙江", "天津", "河南","山东","上海"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_multiple_choice,arr
);
spinner.setAdapter(adapter);
birthday = (EditText)findViewById(R.id.birthday); //为EidtText点击事件绑定监听器
birthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar c = Calendar.getInstance();
new DatePickerDialog(MainActivity.this,
new DatePickerDialog.OnDateSetListener(){
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
EditText show = (EditText)findViewById(R.id.birthday);
show.setText(i+"年"+(i1+1)+"月"+i2+"日");
}
}
,c.get(Calendar.YEAR)
,c.get(Calendar.MONTH)
,c.get(Calendar.DAY_OF_MONTH)).show();
}
});
email = (AutoCompleteTextView)findViewById(R.id.email);
// String email = email.getText().toString(); //输入数字自动匹配邮箱后缀暂为解决,以后会补充
String[] emailSufix = new String[]{"@outlook.com","@gmail.com"};
ArrayAdapter<String> arr2 = new ArrayAdapter<>(this,
android.R.layout.simple_dropdown_item_1line,emailSufix);
email.setAdapter(arr2);
Button bt = (Button)findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
simple(view);
}
});
}
public void simple(View source){
EditText user = (EditText)findViewById(R.id.user);
EditText birthday = (EditText)findViewById(R.id.birthday);
AutoCompleteTextView email = (AutoCompleteTextView)findViewById(R.id.email);
String users = user.getText().toString();
String birthdays = birthday.getText().toString();
String provinces = (String)spinner.getSelectedItem();
String emails = email.getText().toString();
AlertDialog.Builder builder = new AlertDialog.Builder(this) //创建
.setTitle("请确认以下信息") //标题
.setItems(new String[] {"用户名:"+users,"所在地区:"+provinces,"出生日期:"+birthdays,"Email:"+emails}, null); //对话框内容
builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { //按钮
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.setPositiveButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).create().show();
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.bestone.test4_2.MainActivity">
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="16sp"
/>
<EditText
android:id="@+id/user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="密码:"
android:textSize="16sp"
/>
<EditText
android:id="@+id/password"
android:inputType="numberPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="所在地区:"
android:textSize="16sp"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="出生日期:"
android:textSize="16sp"
/>
<EditText
android:id="@+id/birthday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Email:"
android:textSize="16sp"
/>
<AutoCompleteTextView
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
/>
</TableRow>
<Button
android:id="@+id/bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"
/>
</TableLayout>
效果图: