我在自定义对话框中有一个 Datepicker,它显示了日期,用户可以选择日期,我可以获得用户选择的日期。现在我想进一步展示其他日历
例如波斯日历日期而不是格里高利日历日期。现在在我的应用程序中,当用户从日期选择器中选择日期时,我可以在日志中返回波斯日期。但我不知道如何更改DatePicker以显示perisan date.please help。
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add("Add Detail").setIcon(R.drawable.ic_compose).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.custom);
final EditText amount = (EditText) dialog.findViewById(R.id.amtEditText);
final DatePicker datePicker = (DatePicker) dialog.findViewById(R.id.datePicker1);
Button cancelButton = (Button) dialog.findViewById(R.id.canelButton);
Button OKButton = (Button) dialog.findViewById(R.id.OKbutton);
OKButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Log.d("---------------", datePicker.getDayOfMonth() +" "
+ datePicker.getMonth() + " "
+ datePicker.getYear() + " "
+ amount.getText());
Toast.makeText(MainActivity.this, "Got click: "
+ datePicker.getDayOfMonth() + " "
+ datePicker.getMonth() + " "
+ datePicker.getYear(), Toast.LENGTH_SHORT).show();
CivilDate civil = new CivilDate(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
PersianDate perDate = DateConverter.civilToPersian(civil);
Log.d("-------", perDate.getDayOfMonth()+ " " + (perDate.getMonth() + 1) + " " + perDate.getYear() + " " + perDate.getMonthName());
datePicker.init(perDate.getYear(), (perDate.getMonth() + 1), perDate.getDayOfMonth(), null);
}
});
答案 0 :(得分:2)
而不是使用DatePicker
开关来使用Android Wheel库。
它由Google Developer编写,可以看起来像Android DatePicker
,它也可以在旧款手机上提供一致的外观。
它不受你可以放在字段中的限制,这意味着你可以使用你想要的任何东西。
答案 1 :(得分:2)
答案 2 :(得分:1)
不是真正便携的方式是使用反射进入DatePicker,获取微调器并将旋转器的内容显式设置为您需要的内容。
以下是我使用反射在TimePicker中用日本传统时间替换时间的代码:https://github.com/aragaer/jtt_android/blob/0855eb7ae1b3de897640bf560cc3bda700cbc2e2/src/com/aragaer/jtt/JttPickerDialog.java
根据API版本调用fixOld
和fixNew
两种方法之一。 API中的更改可能会导致fixNew在更新的版本上失败,这就是为什么它不是很好的方式。
更好的方法是简单地复制DatePicker的代码和布局,并从中创建自己的自定义视图。