跳转至

使用 SnapTimePicker

在安卓系统中实现定制的 TimePicker

原文:https://www . geeksforgeeks . org/implement-customized-time picker-in-Android-using-snaptimepicker/

安卓时间选择器是一个用户界面控件,用于选择 24 小时格式或上午/下午模式的时间。它用于确保用户在应用程序中选择一天中的有效时间。默认时间选择器可以使用安卓中的快照时间选择器进行自定义。 customized-time-picker

SnapTimePicker 的一些特性有:

  • 可选时间范围支持。
  • 文本和颜色定制。
  • IOS 时间选择器喜欢与材料设计风格。

方法

  • 步骤 1:build.gradle 文件中添加支持库,并在依赖项部分添加依赖项。

    kt implementation 'com.akexorcist:snap-time-picker:1.0.0'

  • 第二步:字符串. xml 文件的值目录中添加以下代码。在此文件中添加应用程序中使用的所有字符串。这些字符串可以从应用程序或其他资源文件(如 XML 布局)中引用。

    ```kt

        GFG | SnapTimePicker     Please select the time     Your selected time is

        %1\(s:%2\)s

        >>

        <<         ```

  • 第三步:activity_main.xml 文件中添加以下代码。在该文件中,添加按钮选择时间,添加文本视图显示所选时间。

    activity _ main . XML

    ```kt

    <?xml version="1.0" encoding="utf-8"?>

    TextView             android:id="@+id/selectedTime"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:textSize="20sp"/     

    <Button         android:id="@+id/defaultTimePicker"         android:layout_width="200dp"         android:layout_height="wrap_content"         android:layout_gravity="center_horizontal"         android:layout_marginStart="104dp"         android:layout_marginBottom="112dp"         android:text="Default Time Picker"         android:textAllCaps="false"         app:layout_constraintBottom_toTopOf="@+id/customTimePicker"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintHorizontal_bias="0.0"         app:layout_constraintStart_toStartOf="parent" />

    <Button         android:id="@+id/customTimePicker"         android:layout_width="200dp"         android:layout_height="wrap_content"         android:layout_gravity="center_horizontal"         android:layout_marginStart="104dp"         android:layout_marginBottom="212dp"         android:text="Custom Time Picker"         android:textAllCaps="false"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintStart_toStartOf="parent" /> ```

  • 第四步:MainActivity.kt 文件中添加以下代码。在该文件中,向按钮添加 onClickListner() 方法,以便每当用户点击按钮时,将创建一个时间选择器对话框。

    MainActivity.kt 公司

    ```kt package com.madhav.maheshwari.snaptimepicker

    import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.akexorcist.snaptimepicker.SnapTimePickerDialog import kotlinx.android.synthetic.main.activity_main.*

    class MainActivity : AppCompatActivity() {     override fun onCreate(savedInstanceState: Bundle?) {         super.onCreate(savedInstanceState)         setContentView(R.layout.activity_main)

    defaultTimePicker.setOnClickListener {             // Default TimePicker             SnapTimePickerDialog.Builder().apply {                 setTitle(R.string.title)                 setTitleColor(android.R.color.white)             }.build().apply {                 setListener {                     // when the user select time onTimePicked                     // function get invoked automatically which                     // sets the time in textViewTime.                         hour, minute ->                     onTimePicked(hour, minute)                 }             }.show(                 supportFragmentManager,                 SnapTimePickerDialog.TAG             )         }

    customTimePicker.setOnClickListener {             // Custom TimePicker             SnapTimePickerDialog.Builder().apply {                 setTitle(R.string.title)                 setPrefix(R.string.time_prefix)                 setSuffix(R.string.time_suffix)                 setThemeColor(R.color.colorAccent)                 setTitleColor(android.R.color.black)             }.build().apply {                 setListener {                     // when the user select time onTimePicked                     // function get invoked automatically which                     // sets the time in textViewTime.                         hour, minute ->                     onTimePicked(hour, minute)                 }             }.show(                 supportFragmentManager,                 SnapTimePickerDialog.TAG             )         }

    }

    private fun onTimePicked(selectedHour: Int, selectedMinute: Int) {         // Pads the string to the specified length         // at the beginning with the specified         // character or space.         val hour = selectedHour.toString()             .padStart(2, '0')         val minute = selectedMinute.toString()             .padStart(2, '0')         selectedTime.text = String.format(             getString(                 R.string.selected_time_format,                 hour, minute             )         )     } } ```

    输出:在模拟器上运行

    优点:

    与简单时间选择器相比,使用快照时间选择器的优势在于:

    • SnapTimePicker 可以根据需求进行定制。
    • 它非常容易使用。
    • 它给 IOS 一种应用的感觉。


回到顶部