【问题标题】:How can I Select data from material date picker and replace the selected date in edit text field? [duplicate]如何从材料日期选择器中选择数据并替换编辑文本字段中的选定日期? [复制]
【发布时间】: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


    【解决方案1】:

    您可以在用户确认有效选择时调用addOnPositiveButtonClickListener 侦听器:

    picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
      @Override public void onPositiveButtonClick(Long selection) {
        // parse the value from millis to formatted date, you can use ZonedDateTime
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2017-10-26
      • 1970-01-01
      相关资源
      最近更新 更多