首页 > 解决方案 > 如何在 Android 的平板电脑和移动设备上调整 AlertDialog 的大小

问题描述

我在我的应用程序中使用自定义警报。我想根据屏幕分辨率将其调整为标准尺寸。我已经实现了以下方法,但它在横向模式下显示了平板电脑的全宽。应用程序支持手机的纵向和平板电脑的两个方向。如何调整到标准警报大小。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingRight="16dp"
        android:layout_marginTop="24dp"
        android:paddingLeft="20dp">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/updated_app"
            android:fontFamily="@font/open_sans_semibold"
            android:textSize="18sp"
            android:textColor="#515151"
            android:id="@+id/update_msg"
            />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@string/version_msg"
            android:fontFamily="@font/open_sans"
            android:id="@+id/txt_version"
            android:textSize="12sp"
            android:textAlignment="textStart"
            android:textColor="#515151"
             />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:textColor="#000000"
            android:fontFamily="@font/open_sans"
            android:textSize="16sp"
            android:text="@string/update_msg"
            android:textAlignment="textStart"
            />
        <LinearLayout
            android:layout_width="match_parent"
            android:gravity="end"
            android:layout_marginTop="24dp"
            android:layout_marginBottom="24dp"
            android:layout_marginRight="10dp"
            android:layout_height="40dp">
            <TextView
                android:id="@+id/cancel_update"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:textAlignment="gravity"
                android:textAllCaps="true"
                android:fontFamily="@font/open_sans_semibold"
                android:textSize="14sp"
                android:layout_marginRight="22dp"
                android:text="Cancel"
                android:textColor="#803377bb" />
            <TextView
                android:id="@+id/btn_update"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:textAlignment="center"
                android:text="Update"
                android:fontFamily="@font/open_sans_semibold"
                android:textSize="14sp"
                android:textAllCaps="true"
                android:textColor="#3377bb"
                />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

并将该警报称为:

  AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    LayoutInflater inflater =this.getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.update_alert, null);
    dialogBuilder.setView(dialogView);
    dialogBuilder.setCancelable(false);
    AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int displayWidth = displayMetrics.widthPixels;
    int displayHeight = displayMetrics.heightPixels;
    WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();

    layoutParams.copyFrom(alertDialog.getWindow().getAttributes());
    int dialogWindowWidth = (int) (displayWidth * 0.85f);
    int dialogWindowHeight = (int) (displayHeight * 0.38f);

    layoutParams.width = dialogWindowWidth;
    layoutParams.height = dialogWindowHeight;
    alertDialog.getWindow().setAttributes(layoutParams);

标签: androidandroid-alertdialogandroid-custom-viewandroid-inflateandroid-screen-support

解决方案


推荐阅读