标签: android-datepicker

阻止在timePicker DialogFragment中选择过去的日期

我在编辑文本上应用以下代码来选择日期.

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

2
推荐指数
1
解决办法
6096
查看次数

不推荐使用ShowDIalog()中的DatePickerDialog

我有下一个代码:

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,但没有成功.下面的代码有效但不是最佳实践.所以我想纠正代码.

你应该如何实现呢?

android-datepicker android-dialog

2
推荐指数
1
解决办法
5382
查看次数

Android DatePicker:根据CURRENT日期禁用PREVIOUS日期

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)

android android-datepicker

2
推荐指数
1
解决办法
2万
查看次数

如何将日期和时间转换为12小时格式

你好,我有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)

我怎么能这样做?

string datetime android android-datepicker

2
推荐指数
1
解决办法
9936
查看次数

尝试向布局添加日期选择器时未找到Android资源异常

我所要做的就是简单地将日期选择器添加到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)

eclipse android android-datepicker android-layout

2
推荐指数
1
解决办法
1636
查看次数

DateFormat产生错误的一年

日期选择器

上面的图片是日期选择器,点击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)

android android-datepicker android-date

2
推荐指数
1
解决办法
2194
查看次数

如何在 MaterialDatePicker 中禁用过去的日期?

 //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

2
推荐指数
1
解决办法
818
查看次数

如何在Android中剪切(删除或隐藏或缩小)Material dateRangePicker(Dialog)的header_title?

我想删除顶部的空间

图像

我的风格主题(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

2
推荐指数
1
解决办法
1486
查看次数

如何禁用 Android MaterialDatePicker 中的未来日期?

我正在尝试使用 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

2
推荐指数
1
解决办法
3979
查看次数

如何更改 Android 中的材质日期和时间选择器背景颜色?

如何更改Android 中的材质日期和时间选择器背景颜色?我发现许多解决方案默认日期和时间选择器不是材料设计

android android-datepicker material-design material-components-android materialdatepicker

2
推荐指数
1
解决办法
3495
查看次数