我正在做一个Android应用程序,我必须显示一个DatePickerDialog。事实是,应用程序将位于具有智能屏幕的设备上,并且日历不适合它。我希望日历更小,同时保持相同的比例。
我尝试使用DatePicker上的ScaleY
和ScaleX
函数来调整它的大小,但它只是调整了所有DatePickers的大小。
这是我用来显示DatePickerDialog
的代码public void ShowDate() {
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dateForm = new DatePickerDialog(ViewForm.this, R.style.ColorOne, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
}
}, year, month, day);
dateForm.show();
DatePicker dp = dateForm.getDatePicker();
dp.setScaleY(Float.parseFloat("0.5"));
dp.setScaleX(Float.parseFloat("0.5"));
}
我希望有人知道如何做到这一点
谢谢
答案 0 :(得分:1)
您可以通过编程方式更改width
和height
DatePickerDialog,只需使用WindowManager.LayoutParams params = dateForm.getWindow().getAttributes();
即可看到此示例:
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dateForm = new DatePickerDialog(this, R.style.AppTheme, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
}
}, year, month, day);
DatePicker dp = dateForm.getDatePicker();
WindowManager.LayoutParams params = dateForm.getWindow().getAttributes();
params.gravity = Gravity.TOP;
// params.x = 0; // locationByX;
// params.y = 0; // locationByY;
params.width = 600; // dialogWidth;
// params.height = 1000; // dialogHeight;
dateForm.getWindow().setAttributes(params);
dateForm.show();
// dp.setScaleY(Float.parseFloat("0.7"));
// dp.setScaleX(Float.parseFloat("0.7"));
答案 1 :(得分:0)
试试这个
dateForm.getWindow().setLayout(width,height)
宽度&特定高度作为设备分辨率大小维护维度文件或使用SDP库。
或针对该特定分辨率使用AlertDialog.THEME_HOLO_LIGHT,如下所示:
DatePickerDialog dateForm = new DatePickerDialog(ViewForm.this, AlertDialog.THEME_HOLO_LIGHT, new DatePickerDialog.OnDateSetListener() {}
答案 2 :(得分:0)
可以使用以下代码:
if (datePickerDialog.getWindow() != null) {
datePickerDialog.getWindow().setLayout(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT);
datePickerDialog.getWindow().setGravity(Gravity.CENTER);
}
您也可以设置自定义宽度和高度,而不是LayoutParams.WRAP_CONTENT。