【简单的学生管理界面】Android添加简单的日历控件

咱们先在简单地XML给显示日期弹出日期分别加个控件。

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.dateexp.MainActivity" >

    <TextView
        android:id="@+id/dispaly_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/boom_date"
        android:text="xxxx-xx-xx"
        android:textSize="35sp" />

    <Button 
        android:id="@+id/boom_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/dispaly_date"
        android:text="弹出"/>

</RelativeLayout>

将这样显示:

 

接下来是在Main_Activity.java文件里对控件的操作:

package com.example.dateexp;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class MainActivity extends Activity {
	int tyear,tmonth,tday;//年月日
	TextView display_date;
	Button boom_date;
	final int DATA_DIOLOG = 1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		
		display_date = (TextView)findViewById(R.id.dispaly_date);
		boom_date = (Button)findViewById(R.id.boom_date);
		
		boom_date.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				showDialog(DATA_DIOLOG);//显示日期窗口
			}
		});
		
		 final Calendar ca = Calendar.getInstance();//实例个日历
		 tyear = ca.get(Calendar.YEAR);
	     tmonth = ca.get(Calendar.MONTH);
	     tday = ca.get(Calendar.DAY_OF_MONTH);
	}
	
	protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DATA_DIOLOG:
                return new DatePickerDialog(this, mdateListener, tyear, tmonth, tday);
        }
        return null;
    }
//  设置日期 利用StringBuffer追加
    public void display() {
        display_date.setText(new StringBuffer().append(tyear).append("年").append(tmonth + 1).append("月").append(tday).append("日"));
    }//textview控件显示格式
	
    //监听(DatePickerDialog为系统自带日历)
    private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            tyear = year;
            tmonth = monthOfYear;
            tday = dayOfMonth;
            display();//textview控件显示
        }
    };
	
	
}

然后运行:

这就成功给Activity添加了一个简单的日历选择器。

那我们怎么使得APP一打开,TextView就显示现在的日期呢?

直接在onCreate里面添加以下代码即可:

String DateString = DateFormat.getDateInstance().format(new Date());

display_date.setText(DateString);//默认显示当前日期

部分如图:

扫描二维码关注公众号,回复: 11637179 查看本文章

下面来记录添加这个日历时遇到的问题:

1.为什么要设置变量final int DATA_DIOLOG = 1?(从文中的showDialog(int id)、onCreateDialog(int id)解释)

答:showDialog(int id):当你想要显示一个对话框时,调用showDialog(int id) 方法并传递一个唯一标识这个对话框的整数。当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。这个回调方法被传以和showDialog(int id)相同的ID。所以这里就对应了onCreateDialog(int id)方法的case后面的id。

onCreateDialog(int id)是什么:当你使用这个回调函数时,Android系统会有效的设置这个Activity为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。(所以当你使用这个函数的时候,它将挂起多个对话框,然后当你触发的showDialog里面的ID对应上其case后面的id,那么相应的对话框将弹出。)

综合上面两个函数的解释,那就可以解释为何定义int DATA_DIOLOG = 1了。它就是个窗口的标识。

猜你喜欢

转载自blog.csdn.net/weixin_43548748/article/details/88676713