我在编辑文本上应用以下代码来选择日期.
public class DatePickerFragment extends DialogFragment
{
private OnDateSetListener listener;
public DatePickerFragment(OnDateSetListener listener)
{
this.listener = listener;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), listener, year, month, day);
}
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
//do some stuff
}
void showDateDialog()
{
DatePickerFragment newFragment = new DatePickerFragment(this);
newFragment.show(getFragmentManager(), "date_picker");
}
Run Code Online (Sandbox Code Playgroud)
但是,我想将所有过去的日期变灰,以便不允许用户选择任何日期.这可以通过代码吗?或者我应该在选择后手动检查日期是否是过去的日期?
android datepicker android-datepicker android-dialogfragment
我有下一个代码:
dateDisplay1.setOnClickListener(new OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
option = 1;
showDialog(DATE_DIALOG_ID);
}
});
Run Code Online (Sandbox Code Playgroud)
和onCreateDialog函数:
protected Dialog onCreateDialog(int id) {
Calendar cal = Calendar.getInstance();
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, dayDate, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
case TIME_DIALOG_ID:
return new TimePickerDialog(this, timeDate, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), false);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将不推荐使用的showDialog()调整为DialogFragment,但没有成功.下面的代码有效但不是最佳实践.所以我想纠正代码.
你应该如何实现呢?
DatePicker我的应用程序中有一个以这种方式设置:
布局:
<TextView
android:id="@+id/traveltext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.11"
android:text="Date Of Travel"
android:textStyle="bold" />
<EditText
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" >
</EditText>
<Button
android:id="@+id/btnCalendar"
android:layout_width="30dp"
android:layout_height="42dp"
android:layout_marginRight="50dp"
android:background="@drawable/date" >
</Button>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
全球价值观:
Button btnCalendar;
EditText txtDate;
private int mYear, mMonth, mDay;
Run Code Online (Sandbox Code Playgroud)
OnCreate:
btnCalendar = (Button) findViewById(R.id.btnCalendar);
txtDate = (EditText) findViewById(R.id.txtDate);
btnCalendar.setOnClickListener(this);
Run Code Online (Sandbox Code Playgroud)
方法 :
@Override
public void onClick(View v) {
if (v == btnCalendar) {
// Process to get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay …Run Code Online (Sandbox Code Playgroud) 你好,我有24小时格式的日期和时间字符串,但我想在12小时内如何做到这一点,我的字符串是
String date_st="12 Nov, 2014 23:13"
Run Code Online (Sandbox Code Playgroud)
我这样做
SimpleDateFormat dateformat = new SimpleDateFormat("dd' 'MMM,' 'yyyy HH:mm aa");
Run Code Online (Sandbox Code Playgroud)
但它根据我的需要不转换它显示23:13 PM
我希望以下列格式显示
String con_date= "12 Nov, 2014 11:13 PM"
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
我所要做的就是简单地将日期选择器添加到API级别为21的线性布局中.当我这样做时,我得到了某些原因 Resources$NotFoundException
这是例外情况:
android.content.res.Resources$NotFoundException
at com.android.layoutlib.bridge.android.BridgeContext.obtainStyledAttributes(BridgeContext.java:490)
at com.android.layoutlib.bridge.android.BridgeContext.obtainStyledAttributes(BridgeContext.java:93)
at android.widget.TextView.setTextAppearance(TextView.java:2484)
at android.widget.YearPickerView$YearAdapter.getView(YearPickerView.java:132)
at android.widget.AbsListView.obtainView(AbsListView.java:2344)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1270)
at android.widget.ListView.onMeasure(ListView.java:1182)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:626)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:526)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:334)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:517) …Run Code Online (Sandbox Code Playgroud) 上面的图片是日期选择器,点击OK后,结果显示如下.
代码如下
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date …Run Code Online (Sandbox Code Playgroud) //Material Date Picker
private val calendar = Calendar.getInstance()
private val constraintsBuilder = CalendarConstraints.Builder().setStart(calendar.timeInMillis)
private val builder = MaterialDatePicker.Builder.datePicker()
private val picker = builder
.setSelection(calendar.timeInMillis)
.setInputMode(MaterialDatePicker.INPUT_MODE_CALENDAR)
.setCalendarConstraints(constraintsBuilder.build())
.build()
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码打开日历 setSelection 方法选择当前日期和 setStart 只适用于当月所以我无法选择上个月的日期但我仍然可以选择当月的过去日期。
如果有人可以帮助我。请告诉我。谢谢。
android datepicker android-datepicker material-components material-components-android

我的风格主题(stackOverFlow 的用户回答在这里)
我的代码
fun clickDatePicker() {
setTheme(R.style.AppTheme_MaterailComponent)
val local = Locale.KOREA
Locale.setDefault(local)
val builder = MaterialDatePicker.Builder.dateRangePicker()
val picker = builder.build()
picker.apply {
addOnPositiveButtonClickListener { selection: Pair<Long, Long>? ->
// just my other logic
selection?.first?.let { setYearMonthDate(it) }
?.let { it1 -> firstAndSecondMap.put(0, it1) }
selection?.second?.let { setYearMonthDate(it) }
?.let { it1 -> firstAndSecondMap.put(1, it1) }
filterDate()
binding.duration = 0
}
show(supportFragmentManager, "picker")
}
}
Run Code Online (Sandbox Code Playgroud) android datepicker android-datepicker material-design material-components-android
我正在尝试使用 MaterialDatePicker 创建一个简单的 DatePicker,其中未来日期被禁用。我尝试了其他类似 StackOverflow 问题的答案,但没有成功。到目前为止,这是我的代码:-
val datePicker = MaterialDatePicker.Builder.datePicker().apply {
setTitleText(getString(R.string.label_select_dob))
setCalendarConstraints(limitRange().build())
}.build()
private fun limitRange(): CalendarConstraints.Builder {
val calendarStart: Calendar = Calendar.getInstance()
val calendarEnd: Calendar = Calendar.getInstance()
val year = 1900
val startMonth = 1
val startDate = 1
calendarStart.set(year, startMonth, startDate)
calendarEnd.set(2021, 3, 27)
val minDate: Long = calendarStart.timeInMillis
val maxDate: Long = calendarEnd.timeInMillis
val constraintsBuilder = CalendarConstraints.Builder()
val validators: ArrayList<CalendarConstraints.DateValidator> = ArrayList()
validators.add(DateValidatorPointForward.from(minDate))
validators.add(DateValidatorPointBackward.before(maxDate))
constraintsBuilder.setValidator(CompositeDateValidator.allOf(validators))
return constraintsBuilder
}
Run Code Online (Sandbox Code Playgroud) android android-datepicker kotlin material-components-android
如何更改Android 中的材质日期和时间选择器背景颜色?我发现许多解决方案默认日期和时间选择器不是材料设计
android android-datepicker material-design material-components-android materialdatepicker
android ×9
material-components-android ×4
datepicker ×3
android-date ×1
datetime ×1
eclipse ×1
kotlin ×1
string ×1