如何在 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);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...