android - 如何在 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);
解决方案
推荐阅读
- firebase - 在 Firestore 中使用 Bigquery 进行全文搜索
- powershell - 如何自定义 PowerShell 继续提示?
- c# - xamarin 表单的 Web 服务无法打开新的浏览器
- clojure - 为什么映射转换器的结果包含大于 2 的元数?
- html - “边距:自动”不起作用,但
正在工作中 - python - 如何将烧瓶中的请求转发到另一个 api 应用程序
- java - 此自定义数组适配器不适用于整数
- java - 在springBoot的内部静态测试类中初始化bean
- python - Python - 根据值过滤数据框
- c++ - 保存在父类类型向量中时调用派生类函数