我是编程新手,刚刚开始学习Kotlin for Android编程. 目前,我正在处理应用程序待办事项列表,其中有一个id为date PickerEditText的EditText输入. 当您单击编辑文本输入时,将显示日历.所以你可以 Select 日期.
我想为两个问题找到一个解决方案.
-
目前,我不知道如何在 Select 日期时使用俄语语言环境. 它应该使用这样的格式:俄语中的日:月:年.
-
DatePickerDialog应该允许用户 Select 任何日期,而不仅仅是当前日期.
我找到了两个解决方案,但在第一个中,日期格式和区域设置不是俄语.但它提供了 Select 任何日期的机会,并将 Select 的日期发送到EditText.
第二个解决方案是很好的日期格式和使用俄语语言环境.但这其中存在一个问题.它会将当前日期发送到文本编辑,尽管您 Select 了另一个日期.
以下是第一个解决方案的代码:
import android.app.DatePickerDialog
import android.app.Dialog
import android.icu.util.Calendar
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import android.widget.Button
import android.widget.EditText
class CustomDialog(var activity: MainActivity) : Dialog(activity), View.OnClickListener {
var yes: Button? = null
var no: Button? = null
private lateinit var inputField: EditText
private lateinit var inputDescription: EditText
private lateinit var editTextDate: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_template)
inputField = findViewById(R.id.dialogInput)
inputDescription = findViewById(R.id.dialogDescription)
val lp = WindowManager.LayoutParams()
lp.copyFrom(this.window?.attributes)
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.height = WindowManager.LayoutParams.WRAP_CONTENT
lp.gravity = Gravity.CENTER
this.window?.attributes = lp
yes = findViewById<Button>(R.id.dialogOkButton)
no = findViewById<Button>(R.id.dialogCancelButton)
editTextDate = findViewById(R.id.datePickerEditText)
yes?.setOnClickListener(this)
no?.setOnClickListener(this)
editTextDate.setOnClickListener {
// on below line we are getting
// the instance of our calendar.
val c = Calendar.getInstance()
// on below line we are getting
// our day, month and year.
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
// on below line we are creating a
// variable for date picker dialog.
val datePickerDialog = DatePickerDialog(
// on below line we are passing context.
activity,
{ view, year, monthOfYear, dayOfMonth ->
// on below line we are setting
// date to our edit text.
val dat = (dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + year)
editTextDate.setText(dat)
},
// on below line we are passing year, month
// and day for the selected date in our date picker.
year,
month,
day
)
// at last we are calling show
// to display our date picker dialog.
datePickerDialog.show()
}
}
override fun onClick(view: View){
when (view.id) {
R.id.dialogOkButton -> {
val inputResult = inputField.text
val inputDescription = inputDescription.text
val inputDate = editTextDate.text
activity.addItem(inputResult.toString(), inputDescription.toString(), inputDate.toString())
dismiss()
}
R.id.dialogCancelButton -> {
dismiss()
}
else -> {
}
}
}
}
下面是第二个解决方案的代码:
import android.app.DatePickerDialog
import android.app.Dialog
import android.icu.util.Calendar
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import android.widget.Button
import android.widget.EditText
class CustomDialog(var activity: MainActivity) : Dialog(activity), View.OnClickListener {
var yes: Button? = null
var no: Button? = null
private lateinit var inputField: EditText
private lateinit var inputDescription: EditText
private lateinit var editTextDate: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_template)
inputField = findViewById(R.id.dialogInput)
inputDescription = findViewById(R.id.dialogDescription)
val lp = WindowManager.LayoutParams()
lp.copyFrom(this.window?.attributes)
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.height = WindowManager.LayoutParams.WRAP_CONTENT
lp.gravity = Gravity.CENTER
this.window?.attributes = lp
yes = findViewById<Button>(R.id.dialogOkButton)
no = findViewById<Button>(R.id.dialogCancelButton)
editTextDate = findViewById(R.id.datePickerEditText)
yes?.setOnClickListener(this)
no?.setOnClickListener(this)
editTextDate.setOnClickListener {
// on below line we are getting
// the instance of our calendar.
val c = Calendar.getInstance()
// on below line we are getting
// our day, month and year.
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
// on below line we are creating a
// variable for date picker dialog.
val datePickerDialog = DatePickerDialog(
// on below line we are passing context.
activity,
{ view, year, monthOfYear, dayOfMonth ->
val simpleDateFormat = SimpleDateFormat("EEEE, dd-MMM-yyyy hh:mm:ss a", Locale("ru"))
val dateTime = simpleDateFormat.format(c.time)
editTextDate.setText(dateTime)
},
// on below line we are passing year, month
// and day for the selected date in our date picker.
year,
month,
day
)
// datePickerDialog.datePicker.locale = Locale("ru")
// at last we are calling show
// to display our date picker dialog.
datePickerDialog.show()
}
}
override fun onClick(view: View){
when (view.id) {
R.id.dialogOkButton -> {
val inputResult = inputField.text
val inputDescription = inputDescription.text
val inputDate = editTextDate.text
activity.addItem(inputResult.toString(), inputDescription.toString(), inputDate.toString())
dismiss()
}
R.id.dialogCancelButton -> {
dismiss()
}
else -> {
}
}
}
}
如何设置代码顺序DatePickerDialog应使用俄语区域设置,日期格式为天:月俄语:年?如果要在DatePickerDialog中 Select 非当前日期,则应按原样将其发送到编辑文本输入.
谢谢!
如何设置代码顺序DatePickerDialog应使用俄语区域设置,日期格式为天:月俄语:年?如果要在DatePickerDialog中 Select 非当前日期,则应按原样将其发送到编辑文本输入.
谢谢!