如何解决如何在Kotlin Android中将日期选择器微调对话框月份的语言更改为印度尼西亚语?
在我的应用程序设计计划中,我想使用的语言为Bahasa Indonesia。在选择日期的情况下,我使用标准的日期选择器微调器对话框,但我不知道如何更改月份的语言。这就是我的日期选择器微调器的外观。如何将月份名称更改为印度尼西亚语,例如“ Jan,Feb,Mar,Apr,Mei,Jun,Agu,Sep,Okt,11月,Des”?
这是我的代码
val cal: Calendar = Calendar.getInstance()
val year: Int = cal.get(Calendar.YEAR)
val month: Int = cal.get(Calendar.MONTH)
val day: Int = cal.get(Calendar.DAY_OF_MONTH)
val dialog =
DatePickerDialog(
context,R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth,{ _,year,month,day ->
listener.setTheDate(year,day) // this to change TextView
},day
)
dialog.datePicker.maxDate = Date().time
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.show()
我还要将按钮(“取消”和“确定”)设置为印度尼西亚语,如“ Batal”和“ OK”。期待获得支持。谢谢。
解决方法
您可以创建一个自定义日期选择器对话框,例如here。
因此,您将创建自己的自定义窗口小部件,称为AppLocaleDatePickerDialog或扩展DatePickerDialog的东西。在某些日期和时间选择器中,有代表,因此您也需要检查这些代表。
private void initPicker(Object object,String[] values) {
try {
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
// If there's a delegate,we use it instead.
if (field.getName().equals("mDelegate")) {
field.setAccessible(true);
object = field.get(object);
fields = object.getClass().getDeclaredFields();
break;
}
}
for (Field field : fields) {
if (field.getName().equals("mAmPmStrings") ||
field.getName().equals("mShortMonths")) {
field.setAccessible(true);
field.set(object,values);
} else if (field.getName().equals("mAmPmSpinner") ||
field.getName().equals("mMonthSpinner")) {
field.setAccessible(true);
Object innerObject = field.get(object);
Method method = innerObject.getClass().getDeclaredMethod(
"setDisplayedValues",String[].class);
method.setAccessible(true);
method.invoke(innerObject,(Object) values);
}
}
Method[] methods = object.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals("updateAmPmControl") ||
method.getName().equals("updateSpinners")) {
method.setAccessible(true);
method.invoke(object);
break;
}
}
} catch (Exception e) {
Log.e(APP_TAG,e.getMessage(),e);
}
}
在res / values / arrays.xml中定义您的月份,并为您的语言创建值。如果是德语,则为res / values-de / arrays.xml。
<string-array name="months_values">
<item>Jan</item>
<item>Feb</item>
<item>Mar</item>
<item>Apr</item>
<item>May</item>
<item>Jun</item>
<item>Jul</item>
<item>Aug</item>
<item>Sep</item>
<item>Oct</item>
<item>Nov</item>
<item>Dec</item></string-array>
并在自定义小部件的声明中像这样初始化它:
initPicker(datePicker,resources.getStringArray(R.array.calendar_months));
关于按钮。您可以使用setNegativeText()和setPositiveText()轻松设置对话框的按钮文本。
dialog.setNegativeText(context.getResources().getString(R.string.cancel));
dialog.setPositiveText(context.getResources().getString(R.string.ok));
如果您需要有关使用字符串资源的更多信息,可以找到它here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。