Timepicker- AGN HUB

TimePicker in Kotlin (Android)

The TimePicker widget is used to select a specific time (hour and minute). Android provides two ways to use a TimePicker:

  1. TimePickerDialog: A dialog-based picker for time selection.

  2. TimePicker Widget: An inline widget for directly selecting time.


1. TimePickerDialog

Implementation

The TimePickerDialog displays a time selection dialog with an hour and minute picker.

Kotlin Code

import android.app.TimePickerDialog

import android.os.Bundle

import android.widget.Button

import android.widget.TextView

import androidx.appcompat.app.AppCompatActivity

import java.util.*


class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)


        val btnShowTimePicker: Button = findViewById(R.id.btnShowTimePicker)

        val textViewTime: TextView = findViewById(R.id.textViewTime)


        btnShowTimePicker.setOnClickListener {

            // Get the current time

            val calendar = Calendar.getInstance()

            val hour = calendar.get(Calendar.HOUR_OF_DAY)

            val minute = calendar.get(Calendar.MINUTE)


            // Create and show the TimePickerDialog

            val timePickerDialog = TimePickerDialog(

                this,

                { _, selectedHour, selectedMinute ->

                    // Format and display the selected time

                    val formattedTime = String.format("%02d:%02d", selectedHour, selectedMinute)

                    textViewTime.text = formattedTime

                },

                hour, minute, true // Use 24-hour format

            )

            timePickerDialog.show()

        }

    }

}

XML Layout

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:padding="16dp">


    <Button

        android:id="@+id/btnShowTimePicker"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Select Time" />


    <TextView

        android:id="@+id/textViewTime"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Selected Time"

        android:textSize="18sp"

        android:paddingTop="16dp" />

</LinearLayout>


2. Inline TimePicker Widget

If you want an inline TimePicker widget in your layout, you can use the TimePicker directly.

XML Layout

<TimePicker

    android:id="@+id/timePicker"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:is24HourView="true" />

Kotlin Code

import android.os.Bundle

import android.widget.TextView

import android.widget.TimePicker

import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)


        val timePicker: TimePicker = findViewById(R.id.timePicker)

        val textViewTime: TextView = findViewById(R.id.textViewTime)


        // Set a listener for time changes

        timePicker.setOnTimeChangedListener { _, hourOfDay, minute ->

            val formattedTime = String.format("%02d:%02d", hourOfDay, minute)

            textViewTime.text = formattedTime

        }

    }

}


Key Properties and Methods

  1. In XML:

    • android:is24HourView: Determines if the picker uses a 24-hour format (true) or a 12-hour format (false).

  2. In Kotlin:

    • timePicker.setIs24HourView(true): Programmatically set 24-hour or 12-hour format.

    • timePicker.hour: Get or set the selected hour (API 23+).

    • timePicker.minute: Get or set the selected minute (API 23+).

    • timePicker.setOnTimeChangedListener { _, hour, minute }: Listener for time changes.


Customization Example

Set Default Time:

timePicker.hour = 10

timePicker.minute = 30

Customize TimePickerDialog:

Set a specific time as the default and customize its behavior:

val timePickerDialog = TimePickerDialog(

    this,

    { _, hourOfDay, minute ->

        val formattedTime = String.format("%02d:%02d", hourOfDay, minute)

        textViewTime.text = formattedTime

    },

    15, // Default hour

    45, // Default minute

    false // Use 12-hour format

)

timePickerDialog.show()


Common Use Cases

  1. Alarm Apps: Selecting alarm times.

  2. Meeting Schedulers: Allow users to select meeting start and end times.

  3. Reminders: Set reminder times for events or tasks.

Would you like more advanced examples or specific use cases? 

Comments

Popular posts from this blog

RadioButtons-AGN HUB

Checkbox- AGN HUB