android DatePickerDialog怎么设置日期选择范围。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android DatePickerDialog怎么设置日期选择范围。相关的知识,希望对你有一定的参考价值。
有个订房的入住日期,还有退房日期。入住日期肯定在当前日期之后,退房日期肯定在入住日期之后。那么怎么做出这个功能呢?
我想要的是:不能选择的日期直接灰掉。不要总是出现提示信息,感觉很繁琐。。
一、可以同过重载DatePickerDialog的setTitle来设置个性的标题
比如:
@Override
public void setTitle(CharSequence title)
// TODO Auto-generated method stub
java.text.DateFormat dataFormat = (DateFormat
.getDateFormat(getContext()));
mCalendar = Calendar.getInstance();
//可得到“12/31/1969(Wed)”形式的日期格式
String strTitle=dataFormat.format(mCalendar.getTime())
+ DateFormat.format(" (E)", mCalendar.getTime()).toString();
super.setTitle(dataFormat.format(strTitle);
二、通过onDateChanged回调函数监听时间的改变
当时间改变时(编辑) 以下函数回被调用
public void onDateChanged(DatePicker view, int year, int month, int day)
Log.i("hubin","onDateChanged");
三、通过updateDate()设置年月日
public void updateDate (int year, int monthOfYear, int dayOfMonth)设置DatePickerDialog的年,月,日
四、通过onDateChangedListener来监听时间设置对话框的确定按钮被按下
onDateChangedListener的onDateSet是用于都在时间设置对话框的确定按钮被按下的监听
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
public class TestClock extends Activity implements OnDateSetListener, OnClickListener
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.date);
btn.setOnClickListener(this);
public void onClick(View v) //普通按钮事件
Calendar d = Calendar.getInstance(Locale.CHINA);
//创建一个日历引用d,通过静态方法getInstance() 从指定时区 Locale.CHINA 获得一个日期实例
Date myDate=new Date();
//创建一个Date实例
d.setTime(myDate);
//设置日历的时间,把一个新建Date实例myDate传入
int year=d.get(Calendar.YEAR);
int month=d.get(Calendar.MONTH);
int day=d.get(Calendar.DAY_OF_MONTH);
//获得日历中的 year month day
DatePickerDialog dlg=new DatePickerDialog(this,this,year,month,day);
//新建一个DatePickerDialog 构造方法中
// (设备上下文,OnDateSetListener时间设置监听器,默认年,默认月,默认日)
dlg.show();
//让DatePickerDialog显示出来
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth)
//DatePickerDialog 中按钮Set按下时自动调用
TextView txt = (TextView) findViewById(R.id.text);
//通过id获得TextView对象
txt.setText(Integer.toString(year) + "-" +
Integer.toString(monthOfYear) + "-" +
Integer.toString(dayOfMonth));
//设置text
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_
>
<TextView
android:layout_
android:layout_
android:text="@string/hello"
android:id="@+id/text"
/>
<Button
android:layout_
android:layout_
android:id="@+id/date"
android:text="设置时间"
>
</Button>
</LinearLayout> 参考技术A package com.solide;
import java.util.Calendar;
import android.app.Activity;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;
public class TestTimeTickerActivity extends Activity implements OnClickListener
/** Called when the activity is first created. */
private Calendar c;
private Button button;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
@Override
public void onClick(View v)
// TODO Auto-generated method stub
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
new TimePickerDialog(this, new OnTimeSetListener()
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
// TODO Auto-generated method stub
, hour, minute, DateFormat.is24HourFormat(this)).show();
去试试本回答被提问者和网友采纳 参考技术B 我只做过简单的时间设置,你可以重写方法,改变他的设置范围追问
你这个等于没回答。不过我研究出一点了。和你分享下:
private Calendar now = Calendar.getInstance();
DatePicker dp = dialog.getDatePicker();
dp.setMinDate(now.getTime().getTime());
恩,不错
Android 使用 DatePickerDialog 显示时间
效果如下:
**老规矩最后有源码,步骤如下:
- 调用 Calendar 类获取年月日**
重点:在最后你会发现月份少了个 1,这是正常的,api 中说这个值原始值为 0,自己加个一就好了。
2. 将年月日的值放入 DatePickerDialog 中
源码如下:
布局文件**
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="216dp"
android:text="点击选择时间"
android:textSize="20sp"/>
复制代码
java 文件:
public class MainActivity extends Activity
private TextView time;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
time.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
showtime();
);
private void initView()
time = (TextView) findViewById(R.id.time);
private void showtime()
Calendar calendar = Calendar.getInstance();//调用Calendar类获取年月日
int mYear = calendar.get(Calendar.YEAR);//年
int mMonth = calendar.get(Calendar.MONTH);//月份要加一个一,这个值的初始值是0。不加会日期会少一月。
int mDay = calendar.get(Calendar.DAY_OF_MONTH);//日
DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2)
time.setText(i + "年" + (i1+1) + "月" + i2 + "日");//当选择完后将时间显示,记得月份i1加一
, mYear,mMonth, mDay);//将年月日放入DatePickerDialog中,并将值传给参数
datePickerDialog.show();//显示dialog
本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
以上是关于android DatePickerDialog怎么设置日期选择范围。的主要内容,如果未能解决你的问题,请参考以下文章
android笔记:DatePickerDialog日期设置对话框
在 DatePickerDialog (Android) 上验证日期时出现 IllegalArgumentException
android DatePickerDialog怎么设置日期选择范围。