android compose TimePicker 时间选择器 使用

package com.wn.androidcomposedemo1.basegoogle
import android.os.Bundle
import android.util.Log
import android.widget.Space
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TimeInput
import androidx.compose.material3.TimePicker
import androidx.compose.material3.rememberTimePickerState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.wn.androidcomposedemo1.ui.theme.AndroidComposeDemo1Theme
import java.util.Calendar
/**
* Author : wn
* Email : maoning20080808@163.com
* Date : 2026/6/28 20:16
* Description : 时间选择器
*/
class TimeActivity : ComponentActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AndroidComposeDemo1Theme() {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
TimeDemo()
}
}
}
}
@Composable
fun TimeDemo(){
Column() {
DialExample(
onConfirm = {
Log.d("AAA", "点击确认")
},
onDismiss = {
Log.d("AAA", "点击取消")
}
)
Spacer(Modifier.height(20.dp))
Text("输入时间选择器")
InputExample(
onConfirm = {
Log.d("AAA", "点击确认")
},
onDismiss = {
Log.d("AAA", "点击取消")
}
)
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DialExample(
onConfirm: () -> Unit,
onDismiss: () -> Unit
){
val currentTime = Calendar.getInstance()
val timePickerState = rememberTimePickerState(
initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
initialMinute = currentTime.get(Calendar.MINUTE),
is24Hour = true
)
Column() {
TimePicker(
state = timePickerState
)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
Button(onClick = onDismiss) {
Text("取消")
}
Spacer(Modifier.width(20.dp))
Button(onClick = onConfirm) {
Text("确定")
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun InputExample(
onConfirm: () -> Unit,
onDismiss: () -> Unit
){
val currentTime = Calendar.getInstance()
val timePickerState = rememberTimePickerState(
initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
initialMinute = currentTime.get(Calendar.MINUTE),
is24Hour = true
)
Column() {
TimeInput(
state = timePickerState,
)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
Button(onClick = onDismiss) {
Text("取消")
}
Button(onClick = onConfirm) {
Text("确定")
}
}
}
}
}