我想显示datepicker弹出窗口.我找到了一些例子,但我没有得到正确的答案.我有一个按钮,我希望当我点击按钮时,应弹出datepicker对话框,并在设置日期后,日期应存储在变量中.PLease为我提供示例代码或良好的链接.
我想点击编辑文字打开日历.之后,我想设置用户从编辑文本中的日历中选择的日期.问题是,只有当我第二次点击EditText然后打开日历时.请帮我解决问题(why calendar don't open for the first time).
EditText XML代码
<EditText
android:id="@+id/dateofBirth"
android:layout_width="290dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:maxLines="1"
android:hint="dd/mm/yyyy" />
Run Code Online (Sandbox Code Playgroud)
活动代码
public void informationPopUp() {
final Dialog dialog= new Dialog(MainActivity.this,R.style.Dialog_Fullscreen);
dialog.setContentView(R.layout.details_dialog);
dateofBirth = (EditText)dialog.findViewById(R.id.dateofBirth);
dialog.show();
myCalendar = Calendar.getInstance();
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
dateofBirth.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View …Run Code Online (Sandbox Code Playgroud) 如何在DatePicker对话框中隐藏过去的日期?我不想让用户选择过去的日期
什么是最好的方式?如果我想限制用户只选择未来的日期!
@Override
public void onCreate(Bundle savedInstanceState)
{
.................................................
editDate.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(DIALOG_DATE);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DATE:
return new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
dateTime.set(year, monthOfYear, dayOfMonth);
editDate.setText(dateFormatter
.format(dateTime.getTime()));
}
}, dateTime.get(Calendar.YEAR),
dateTime.get(Calendar.MONTH),
dateTime.get(Calendar.DAY_OF_MONTH));
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在调试一个问题,如果设置了非默认的最小日期CalendarView,那么DatePicker移动到1964年10月.这至少在API17 Nexus7仿真器上再现,但在其他设备上有关于此问题的报告,其中平台样式包括日期选择器中的微调器和日历视图.
这是一个演示此问题的代码段:
class DatePickerDialog1964 extends DatePickerDialog {
DatePickerDialog1964(Context c) {
super(c, null, 2013, 4, 21);
@SuppressWarnings("deprecation")
Date min = new Date(2013-1900, 4, 21);
DatePicker p = getDatePicker();
p.setMinDate(min.getTime());
}
}
Run Code Online (Sandbox Code Playgroud)
...
new DatePickerDialog1964(context).show();
Run Code Online (Sandbox Code Playgroud)
截屏:

当然,期望旋转器和日历视图显示相同的日期.
我会继续调试这个,但如果有SO用户有经验或其他见解,请分享.
有关:
我是Android Fragments的新手,我想知道如何DatePicker在简单Fragment而不是a中显示或实现FragmentActivity.
例如,我的班级名称是:
public class FragmentAddCard extends Fragment {
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我知道这有很多问题,但没有一个解决方案适合我,所以这个问题.我想限制用户在今天之前选择日期,但我无法这样做.
public class DatePickerDialogFragment extends DialogFragment {
private OnDateSetListener listener;
public void setListener(OnDateSetListener listener) {
this.listener = listener;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getContext(), listener, year, month, day);
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
return dialog;
}
}
Run Code Online (Sandbox Code Playgroud)
我表现为:
DatePickerDialogFragment fragment = new DatePickerDialogFragment();
fragment.setListener(dateSetListener);
fragment.show(getSupportFragmentManager(), "Choose booking date");
Run Code Online (Sandbox Code Playgroud)
我希望用户不应该在今天之前选择日期.正如你所看到的,我setMinDate()用今天的时间调用了方法,但它没有效果.该对话框显示今天之前的日期为灰色但可选择.
我也尝试按照一些stackoverflow答案中的建议进行子类DatePickerDialog和覆盖onDateChanged,但没有任何成功.
我只在StackOverflow上找到了另外一个这个问题的实例,这个问题没有答案(去年),所以我想我会再给它一个镜头.(Android DatePicker/Dialog使用最小/最大日期显示不正确的月/ s,带有实际图像)
设置Android DatePicker的minDate和maxDate时,它将显示在最小和最大日期范围内不可用的月份.我将使用以下图片演示此问题:
当我在minDate时:

当我处于日期限制之间时:

当我在maxDate时:

在这种情况下,不可用的月份(在这种情况下是四月和六月)充当最小值和最大值,所以到四月,DatePicker将拍摄到五月十五日,或者试图滑到六月将DatePicker移动到五月二十二日.
是否可以将这些(不可用的)月份隐藏起来,因此在此测试用例中,唯一可选择的部分是日期?另外请记住,例如,5月29日到6月5日之间的间隔必须出现在列表中.
一直在尝试查看关于DatePickers突然出现的其他问题,EditText但我在使用它时遇到了问题.
我见过的例子,你可以使用setOnClickListener或者setOnTouchListener,哪一个是最好的?
我也见过几种不同的设计DatePicker,你如何改变设计?
下面是我的代码到目前为止,尝试使用其他示例中的代码,但无法使其工作.
import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
/**
* Created by MOS182 on 7/21/13.
*/
public class AddReminder extends Activity {
TextView Title, Amount, PaymentDate, ReminderDate, ReminderTime;
EditText eTitle, eAmount, ePaymentDate, eReminderDate, eReminderTime;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.reminders_dialog);
initializeVariables();
}
private void initializeVariables()
{
Title = (TextView) findViewById(R.id.tvTitle);
Amount = (TextView) findViewById(R.id.tvAmount);
PaymentDate = (TextView) findViewById(R.id.tvPaymentDate);
ReminderDate = (TextView) findViewById(R.id.tvReminderDate);
ReminderTime = (TextView) findViewById(R.id.tvReminderTime); …Run Code Online (Sandbox Code Playgroud) 我试图在datePicker对话框中以类似的格式显示日期Sep|29|2016.你可以在下面的图像中看到.
不幸的是,大部分时间我28|M09|2016很少得到我的预期输出.你可以在下面的图像中看到
我试过以下代码
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.US));
calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.US);
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("yearr==="+yy);
System.out.println("monthh==="+mm);
System.out.println("dayy==="+dd);
DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
this,yy,mm,dd);
return datepickerdialog;
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的期待.
如何向 MaterialDatePicker 添加约束以强制用户仅选择 2 个日期之间的日期?
val constraintBuilder = CalendarConstraints.Builder()
val materialRangeBuilder = MaterialDatePicker.Builder.datePicker()
materialRangeBuilder.setTitleText("Book Date")
materialRangeBuilder.setCalendarConstraints(constraintBuilder.build())
val materialRangePicker = materialRangeBuilder.build()
materialRangePicker.addOnPositiveButtonClickListener {
Timber.d("$it")
}
materialRangePicker.show(supportFragmentManager, "DATE_RANGE_PICKER")
Run Code Online (Sandbox Code Playgroud) android android-datepicker kotlin material-components-android