簡體   English   中英

以編程方式在 Android 中更改 DatePicker 日歷大小

[英]Change DatePicker calendar size in Android programmatically

我正在做一個 Android 應用程序,我必須顯示一個 DatePickerDialog。 事實是,該應用程序將在具有智能屏幕的設備上運行,而日歷不適合其中。 我希望日歷更小,同時保持相同的比例。

看起來像這樣

我嘗試使用 DatePicker 上的ScaleYScaleX函數來調整它的大小,但它只是調整了所有 DatePicker 的大小。

像這樣

這是我用來顯示 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"));
}

我希望有人會知道如何做到這一點

謝謝

您可以以編程方式更改 DatePickerDialog 的widthheight ,您只需使用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"));

試試這個

dateForm.getWindow().setLayout(width,height)

寬度和高度特定於設備分辨率大小維護尺寸文件或為此使用 SDP 庫。

或者對於該特定分辨率使用 AlertDialog.THEME_HOLO_LIGHT 如下:

DatePickerDialog dateForm = new DatePickerDialog(ViewForm.this, AlertDialog.THEME_HOLO_LIGHT, new DatePickerDialog.OnDateSetListener() {}

可以使用以下代碼:

  if (datePickerDialog.getWindow() != null) {
        datePickerDialog.getWindow().setLayout(WindowManager.LayoutParams.WRAP_CONTENT, 
        WindowManager.LayoutParams.WRAP_CONTENT);
        datePickerDialog.getWindow().setGravity(Gravity.CENTER);
  }

除了 LayoutParams.WRAP_CONTENT,您還可以設置自定義寬度和高度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM