【发布时间】:2021-04-14 11:16:07
【问题描述】:
我想使用材料日期选择器组件制作一个出生日期日期选择器。 我的主要目标是当用户按下编辑文本视图时,它将显示日期选择器对话框。然后用户选择一个日期并将其替换为编辑文本视图中的选定日期。我正在为我的 UI 使用材质组件。
这是我的工作目标的可视化表示。
这里是Input XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".entry.StudentEntryFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Date of birth -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/dateOfBirth"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/date_of_birth"
android:orientation="vertical"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/department_list_dropdown">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:inputType="date"
android:onClick="dateOfBirth"
android:textAppearance="@style/TextAppearance.MdcTypographyStyles.Subtitle1"
android:typeface="normal" />
</com.google.android.material.textfield.TextInputLayout>
<!--Constraint layout finish-->
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</layout>
这里是InsertActivity.kt 代码:
package com.example.studentinfodb
import android.media.tv.TvContract
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.ArrayAdapter
import android.widget.AutoCompleteTextView
import androidx.databinding.DataBindingUtil
import com.example.studentinfodb.databinding.ActivityInsertBinding
import com.google.android.material.datepicker.MaterialDatePicker
class InsertActivity : AppCompatActivity() {
private lateinit var binding: ActivityInsertBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_insert)
// academic school list items
val schoolNames = listOf(
"School of Business & Economics",
"School of Humanities & Social " +
"Sciences",
"School of Engineering & Physical Sciences",
"School of Health & Life Sciences"
)
val schoolAdapter = ArrayAdapter(this, R.layout.school_list, schoolNames)
(binding.schoolListDropdown.editText as? AutoCompleteTextView)?.setAdapter(schoolAdapter)
// department name list
val departmentNames = listOf(
"Accounting & Finance",
"Economics",
"Management",
"Marketing & International Business",
"MBA & EMBA Programs"
)
val departmentAdapter = ArrayAdapter(this, R.layout.school_list, departmentNames)
(binding.departmentListDropdown.editText as? AutoCompleteTextView)?.setAdapter(
departmentAdapter
)
}
// date picker dialog for edit text view
fun dateOfBirth(view: View) {
val datePicker = MaterialDatePicker.Builder.datePicker()
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
.setTitleText("Add date of birth").build()
datePicker.show(supportFragmentManager, datePicker.toString())
}
}
【问题讨论】:
标签: android kotlin material-components-android android-datepicker