Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Kotlin Android中将datepicker spinner dialog months的语言更改为Bahasa Indonesia?_Android_Kotlin_Datepicker_Dialog_Android Spinner - Fatal编程技术网

如何在Kotlin Android中将datepicker spinner dialog months的语言更改为Bahasa Indonesia?

如何在Kotlin Android中将datepicker spinner dialog months的语言更改为Bahasa Indonesia?,android,kotlin,datepicker,dialog,android-spinner,Android,Kotlin,Datepicker,Dialog,Android Spinner,在我的应用程序设计计划中,我想使用印度尼西亚语。在这个选择日期的例子中,我使用standart datepicker微调器对话框,我不知道如何更改月份的语言。这就是我的DatePicker旋转器的样子。如何将月份名称更改为印度尼西亚语,如“一月、二月、三月、四月、五月、六月、七月、Agu、九月、Okt、十一月、Des” 这是我的密码 val cal: Calendar = Calendar.getInstance() val year: Int

在我的应用程序设计计划中,我想使用印度尼西亚语。在这个选择日期的例子中,我使用standart datepicker微调器对话框,我不知道如何更改月份的语言。这就是我的DatePicker旋转器的样子。如何将月份名称更改为印度尼西亚语,如“一月、二月、三月、四月、五月、六月、七月、Agu、九月、Okt、十一月、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, month, day) // this to change TextView
                    },
                    year, month, day
                )
            dialog.datePicker.maxDate = Date().time
            dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            dialog.show()

此外,我想使按钮(取消和确定)是巴哈萨印度尼西亚像“巴塔尔”和“确定”。期待支持。谢谢。

您可以像这样创建一个自定义日期选择器对话框

因此,您可以创建自己的自定义小部件,称为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>
关于按钮。使用setNegativeText()和setPositiveText()可以非常轻松地设置对话框的按钮文本


如果您需要有关使用字符串资源的更多信息,可以找到它。

谢谢您的回答。我终于明白了如何在代码的帮助下更改按钮文本。但可能是因为我的代码是用Kotlin编写的,而你的代码是用Java编写的,所以看起来差别很大。但我还不知道这个月代码的变化是如何进行的。我把你的代码,但很多错误。我不知道。再说一遍,也许是因为语言的差异和我对跨语言知识的缺乏。我仍在努力完成这个案子。谢谢你的帮助,凯蒂·维洛宁。
initPicker(datePicker, resources.getStringArray(R.array.calendar_months));
dialog.setNegativeText(context.getResources().getString(R.string.cancel));
dialog.setPositiveText(context.getResources().getString(R.string.ok));