2013-05-04 118 views
2

我有一个日期选择器中的自定义对话框它显示日期和用户可以选择日期和我得到用户选择日期。现在我想通过显示其他日历显示DatePicker与其他日历系统

来进一步了解例如波斯日历日期代替阳历日期。现在在我的应用程序中,当用户从日期选择器中选择日期时,我可以在日志中返回波斯语日期。但我不知道如何更改DatePicker以显示perisan date.please帮助。

@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); 
     } 
    }); 

回答

2

而不是使用DatePicker切换到使用Android Wheel库。 它由Google开发人员编写,它可以看起来像Android DatePicker,它还可以在旧手机上提供一致的外观和感觉。

它不受你可以放在字段中的限制,这意味着你可以使用任何你想要的东西。

1

并非如此简单的方法是使用反射来达到进入的DatePicker,得到纺纱和明确设定微调内容,你需要什么。

这是我写的使用反射与日本传统的时间,以取代次TimePicker代码:https://github.com/aragaer/jtt_android/blob/0855eb7ae1b3de897640bf560cc3bda700cbc2e2/src/com/aragaer/jtt/JttPickerDialog.java 两种方法之一fixOldfixNew根据API的版本被调用。 API的变化可能会导致fixNew在更新的版本上失败,这就是为什么它不是真正的好方法。

更好的方法可能是简单复制DatePicker的代码和布局,并从中创建自己的自定义视图。