gpt4 book ai didi

android - 在 api 11 之前在 android 中将日期设置为最小值和最大值

转载 作者:行者123 更新时间:2023-11-29 01:41:06 24 4
gpt4 key购买 nike

我无法将日期纠察对话框设置为最小和最大日期。用户可以无限向上和向后滚动以选择任何年份或日期。但我想使用受限的日期选择器对话框。谁能帮帮我。

提前谢谢你。

最佳答案

久经考验!

DatePickerDialogWithMaxMinRange.java

public class DatePickerDialogWithMaxMinRange extends DatePickerDialog {

static int maxYear = 2005;
static int maxMonth = 11;
static int maxDay = 31;

int minYear = 1955;
int minMonth = 0;
int minDay = 1;

public DatePickerDialogWithMaxMinRange(Context context,
OnDateSetListener callBack, int minYear, int minMonth, int minDay,
int maxYear, int maxMonth, int maxDay) {
super(context, callBack, maxYear, maxMonth, maxDay);
this.minDay = minDay;
this.minMonth = minMonth;
this.minYear = minYear;
DatePickerDialogWithMaxMinRange.maxDay = maxDay;
DatePickerDialogWithMaxMinRange.maxMonth = maxMonth;
DatePickerDialogWithMaxMinRange.maxYear = maxYear;
}

@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
super.onDateChanged(view, year, monthOfYear, dayOfMonth);

if (year > maxYear || monthOfYear > maxMonth && year == maxYear
|| dayOfMonth > maxDay && year == maxYear
&& monthOfYear == maxMonth) {
view.updateDate(maxYear, maxMonth, maxDay);
} else if (year < minYear || monthOfYear < minMonth && year == minYear
|| dayOfMonth < minDay && year == minYear
&& monthOfYear == minMonth) {
view.updateDate(minYear, minMonth, minDay);
}
}
}

MyAndroidAppActivity.java

public class MyAndroidAppActivity extends Activity {


DatePickerDialogWithMaxMinRange datePickerDialog= null;
DatePickerDialog.OnDateSetListener datePickerOnDateSetListener;
Calendar myCalendar;

private TextView tvDisplayDate;
private Button btnChangeDate;

static final int DATE_DIALOG_ID = 999;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

tvDisplayDate = (TextView)findViewById(R.id.lblDate);
setDate();
addListenerOnButton();

}

public void addListenerOnButton() {

btnChangeDate = (Button) findViewById(R.id.btnChangeDate);

btnChangeDate.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

datePickerDialog.show();

}

});

}

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// set date picker as current date

return new DatePickerDialog(this, datePickerOnDateSetListener, intCurrentYear, intCurrentMonth,intCurrentDay);
}
return null;
}

private int intCurrentYear;
private int intCurrentMonth;
private int intCurrentDay;
private int intMaxYear;
private int intMaxMonth;
private int intMaxDay;
private int intMinYear;
private int intMinMonth;
private int intMinDay;


public void setDate() {
/*
* Initialise Listener for date set
*/

datePickerOnDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
tvDisplayDate.setText(new StringBuilder().append(year)
.append("-").append(monthOfYear + 1).append("-")
.append(dayOfMonth));
}
};

// initialise DatePicker

myCalendar = Calendar.getInstance();

intCurrentYear = myCalendar.get(Calendar.YEAR);
intCurrentMonth = myCalendar.get(Calendar.MONTH);
intCurrentDay = myCalendar.get(Calendar.DAY_OF_MONTH);


intMaxYear = intCurrentYear;
intMaxMonth = intCurrentMonth;
intMaxDay = intCurrentDay;

intMinYear = 2011;
intMinMonth = intCurrentMonth;
intMinDay = intCurrentDay;

datePickerDialog = new DatePickerDialogWithMaxMinRange(MyAndroidAppActivity.this, datePickerOnDateSetListener,intMinYear,intMinMonth,intMinDay,intMaxYear,intMaxMonth,intMaxDay);
}

ma​​in.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/btnChangeDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change Date" />

<TextView
android:id="@+id/lblDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Current Date (M-D-YYYY): "
android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge" />


</LinearLayout>

关于android - 在 api 11 之前在 android 中将日期设置为最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com