【问题标题】:DatePicker not showing correct year (2021 should be 2564) for Thai cultureDatePicker 未显示泰国文化的正确年份(2021 应为 2564)
【发布时间】:2022-01-06 09:41:29
【问题描述】:

我正在开发一个支持各种语言/文化的应用程序。但是,对于泰国文化,DatePicker 控件似乎有问题:

我尝试使用(也尝试过 CultureInfo.CurrentCulture 或 CultureInfo.CurrentUICulture)应用 ThreadCulture:

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture

和应用 ThaiBuddhhistCalendar:

_ = new System.Globalization.ThaiBuddhistCalendar();

但小部件年份始终显示为 2021 而不是 2564。

任何解决问题的提示都会非常有帮助。

【问题讨论】:

  • 如果您将手机的当前文化设置为泰语,然后关闭/打开手机电源(应该没关系,但只是为了确定...),然后运行应用程序 - 可以解决问题吗? (如果在模拟器上进行测试,请按下模拟器的电源按钮。)[如果是这样,则缩小可能出现此类错误的范围。]
  • 这可能是 XF 中一个已知的未修复错误。见XF issue #2049。我在那里添加了一条评论来引用这一点,因为开发人员已经回复询问是否有人仍然看到问题。
  • 我尝试重启/开启/关闭模拟器或物理设备,但没有成功。

标签: xamarin xamarin.forms xamarin.android datepicker


【解决方案1】:

您可以按照以下步骤操作。

  1. 更改选择器的年份范围。默认值在 1900 到 2100 之间。您可以在 Xaml 中的 Xamarin.Forms DatePicker 中设置。

         <DatePicker MaximumDate="12/31/2600"></DatePicker>
    
  2. 当您设置ThaiBuddhistCalendar 时,DataPicker 将在测试中显示默认的 DateTime 和 2564 年。但是当您打开对话框时,您需要在自定义渲染器中更改年份。

     DatePickerDialog pickerDialog;
     private Xamarin.Forms.DatePicker datePicker;
    
     protected override DatePickerDialog CreateDatePickerDialog(int year, int month, int day)
     {
    
         pickerDialog = new DatePickerDialog(Context, (o, e) =>
         {
             datePicker.Date = e.Date.AddYears(-543);
             ((IElementController)datePicker).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
         }, year + 543, month, day);
    
    
         return pickerDialog;
     }
    

    有关 DatePicker 的自定义渲染器的更多详细信息,您可以查看我之前完成的代码。 How to change DatePicker Ok and Cancel button text in Xamarin forms?

我们只能在您屏幕截图的粉红色部分将年份更改为 2564。中间黑色的2021,由于是原生默认值,我们无法在第一时间更改默认值。但是当我们再次选择2564时,黑色的2021就可以了。

 private static final int DEFAULT_START_YEAR = 1900;
private static final int DEFAULT_END_YEAR = 2100; 

Xamarin.Android 只是 Android 原生库的一层封装,没有额外的操作,可以求助Reporting Bugs | Android Open Source Project

【讨论】:

  • 请检查我的更新。
  • Wendy,上面的解决方案不一致,我在这里创建了一个错误(github.com/xamarin/Xamarin.Forms/issues/14963)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
相关资源
最近更新 更多