我正在编写一个包含DatePickerDialog的应用程序,它不显示负/正按钮。
以下是标题和消息(它没有显示按钮)问题的一个演示:
屏幕720x1280 / xhdpi (错误:没有显示按钮)

这是生成选择器的代码:
DatePickerDialog dpd = new DatePickerDialog(context, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
Log.i(TAG,"onDateSet");
readingDateTv.setText(MainActivity.sdf.format(c.getTime()));
readingDateTv.setBackgroundColor(Color.argb(0x80, 0xff, 0x99, 0x99));
notifyListeners();
}
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
dpd.setTitle("Reading");
dpd.setMessage("Enter Reading Date");
dpd.show();这似乎是屏幕大小、DatePickerDialog布局,特别是message字段的一个问题。因此,一般的问题是:这是DatePickerDialog的错误吗?
发布于 2022-06-15 12:32:56
随着这个问题和调查的发展,很明显,这是DatePickerDialog的屏幕大小问题,特别是如何在布局中处理message字段。( message字段应该显示为字幕(字体比标题小,标题下面)。
我包括各种屏幕结果(来自模拟器)来演示这个问题。
屏幕720x1280 / xhdpi (错误:没有显示按钮)

这是生成选择器的代码:
DatePickerDialog dpd = new DatePickerDialog(context, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
Log.i(TAG,"onDateSet");
readingDateTv.setText(MainActivity.sdf.format(c.getTime()));
readingDateTv.setBackgroundColor(Color.argb(0x80, 0xff, 0x99, 0x99));
notifyListeners();
}
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
dpd.setTitle("Reading");
dpd.setMessage("Enter Reading Date");
dpd.show();上面的图像来自一个模拟的Galaxy Nexus API 25 sw320dp。当我在模拟的Nexus 7 API 25 sw600dp上运行这个应用程序时,它看起来很好:
屏幕1200x1920 / xhdpi (正确)

然后,我创建了一个ldpi仿真器(120 of密度和240x400屏幕大小),以了解它如何处理屏幕大小和密度的极端低端。
结果如下所示,当没有为对话框定义message时,存在滚动条和按钮--但是当定义了message时,滚动条就存在,而没有按钮。
屏幕240x400 / mdpi
(左-无消息正确)(右-消息错误没有按钮)


因此,我的结论是,这是一个带有消息的小屏幕DatePickerDialog布局的错误。因此,对于我来说,解决方案是不使用message属性。
对于需要message并且需要处理小屏幕大小的情况,那么定制日期选择对话框的自定义布局可能是唯一的选项。
https://stackoverflow.com/questions/72617568
复制相似问题