android compose TimePicker 时间选择器 使用

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("确定")
                }
            }

        }
    }
}