我从material3文档中获得了用于撰写的代码:
import androidx.compose.foundation.layout.Box
import androidx.compose.material3.Button
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.material3.TimeInput
import androidx.compose.material3.rememberTimePickerState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
var showTimePicker by remember { mutableStateOf(false) }
val state = rememberTimePickerState()
val formatter = remember { SimpleDateFormat("hh:mm a", Locale.getDefault()) }
val snackState = remember { SnackbarHostState() }
val snackScope = rememberCoroutineScope()
Box(propagateMinConstraints = false) {
Button(
modifier = Modifier.align(Alignment.Center),
onClick = { showTimePicker = true }
) { Text("Set Time") }
SnackbarHost(hostState = snackState)
}
if (showTimePicker) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个 TimePickerDialog 但不幸的是,出现的时间选择器使用起来非常麻烦:
有什么方法可以像Android使用的旧时间选择器一样构建一个时间选择器,如下所示:
我的代码如下:
ButtonTime.Click += delegate
{
ShowTimePickerDialog();
};
void ShowTimePickerDialog()
{
var dialog = new TimePickerDialogFragment(this, hour, minute, this);
dialog.Show(FragmentManager, null);
}
Run Code Online (Sandbox Code Playgroud) 我正在制作一个带标题的日期选择器,但是它的视图很难看,因为没有底部边缘,我怎样才能使它变得不那么美观?
你可以看到它非常难看.
我的代码:
if(endTime.isEmpty() || startTime.isEmpty()){
int CustomHour = 12;
int CustomMinute = 00;
int hour = CustomHour;
int minute = CustomMinute;
TimePickerDialog tpd = new TimePickerDialog(ActivityAlarm.this, new TimePickerDialog.OnTimeSetListener()
{
int callCount = 0; //To track number of calls to onTimeSet()
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute)
{
...
}, hour, minute, DateFormat.is24HourFormat(ActivityAlarm.this));
tpd.setTitle("Set Time");
// Create a new instance of TimePickerDialog and return it
return tpd;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用时间选择器来选择时间,然后以24小时格式以吐司形式显示它.我正在像"2:6"这样的吐司输出.我想以适当的时间格式获得它,如"02:06".我怎样才能做到这一点....
public void ShowTimePicker(View view) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
}
public static class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的 TimePickerDialog 设置标题。我看过几个例子,但我无法得到我想要的结果。这就是我想要得到的。
但无法知道如何在图片中放置“请选择日期”之类的标题。
到目前为止我的代码:
// OnTimeListener
val timeSetListener = TimePickerDialog.OnTimeSetListener { _, hourOfDay, minute ->
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay)
calendar.set(Calendar.MINUTE,minute)
updateTimeInView()
}
// Opening time picker dialog
val openingTimePickerDialog = TimePickerDialog(this,
timeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),true)
openingTimePickerDialog.setTitle("Opening Hours")
openingTimePickerDialog.show()
Run Code Online (Sandbox Code Playgroud)
该updateTimeInView()函数只是使用选择器中选择的时间更改 TextView。
感谢您对此的帮助!
我正在尝试创建一个自TimePickerDialog定义的小时和分钟的自定义间隔,并设法通过使用这个问题的答案来解决它。
问题是 Android Studio 显示以下警告:
不支持通过反射访问内部 API,并且可能无法在所有设备上或将来使用。使用反射访问隐藏/私有的 Android API 是不安全的;它通常不适用于其他供应商的设备,并且可能会突然停止工作[...]
问题在第一行:
Class<?> classForid = Class.forName("com.android.internal.R$id");
Field timePickerField = classForid.getField("timePicker");
TimePicker mTimePicker = findViewById(timePickerField.getInt(null));
Field minuteField = classForid.getField("minute");
Field hourField = classForid.getField("hour");
NumberPicker minutePicker = mTimePicker.findViewById(minuteField.getInt(null));
NumberPicker hourPicker = mTimePicker.findViewById(hourField.getInt(null));
Run Code Online (Sandbox Code Playgroud)
我需要一些访问这两个NumberPicker对象的替代方法。