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:
TimePickerDialog: A dialog-based picker for time selection.
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
In XML:
android:is24HourView: Determines if the picker uses a 24-hour format (true) or a 12-hour format (false).
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
Alarm Apps: Selecting alarm times.
Meeting Schedulers: Allow users to select meeting start and end times.
Reminders: Set reminder times for events or tasks.
Would you like more advanced examples or specific use cases?
Comments
Post a Comment