AlertDialog设置自定义高度

AlertDIalog 自定义大小 AlertDialog 自定义大小方法:使用 WindowManager.LayoutParams代码如下:AlertDialog.Builder builder = new AlertDialog.Builder(this);          builder.setView(LayoutInflater.from(context).inflate(R.layout.select_birthda... 阅读详情

AlertDialog

在开发中,AlertDialog是十分不错的类,它提供给我们一个通用对话框,我们只需要简单的设置一些东西就可以实现了一个具有简单功能的对话框了,包括按钮,或者是列表等等,但是我们可以注意到一个问题,那就是对话框的大小,它是自适应的,如果内容太大,我们的显示就出现了问题,比如下面的情况:
这里写图片描述

可以看到,这个内容已经占了很大的空间,看起来不是很美观,所以我们想设置它的自定义大小,比如说就是占屏幕的1/2,这样就可以看起来不错,但是该怎么做的?

自定义高度

源码:

        String items[] = new String[]{"菜单1","菜单2","菜单3","菜单4"};
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(
                "菜单").setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                //自己实现的内容
                dialog.dismiss();
            }

        });
        AlertDialog ab = builder.create();
        ab.show();
        WindowManager manager = getWindowManager();
        Display d = manager.getDefaultDisplay();
        Window window = ab.getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
        params.height = (int) (d.getHeight() * 0.5);
        params.gravity = Gravity.CENTER_HORIZONTAL;
        ab.getWindow().setAttributes(params);

实现思路

  1. 我们需要生成一个AlertDialog.Builder的对象来生成AlertDialog对象,因为我们不能直接new出一个对象,我们在Builder对象设置好内容,然后调用Builder的create方法来生成一个AlertDialog对象。

  2. 我们需要得到一个WindowManger对象和一个Display对象,用处是得到屏幕的分辨率。

  3. 我们需要需要得到一个Window对象,对AlertDialog的方法来得到,此时Window对象就是AlertDialog对象的一个实体了。

  4. 我们需要得到LayoutParams的对象,然后我们设置高度,用params.height = (int) (d.getHeight() * 0.5)这一行代码就可以设置高度了,为屏幕高度的一半。

  5. 最后一步就是将LayoutParams对象设置到我们之前得到的Window对象中,这样我们就可以大功告成了^_^


注意

代码是简单的,但是开始写的时候我们还是很多的,因为总是无法应用成功,原因最后找到了,不过是很坑的原因,希望大家有所注意。
我总是想当然的以为设置好了高度之后才调用AlertDialog的show()方法,其实错误就是在这里,我们一定要先调用show()方法,再得到Window的对象,然后我们才可以设置高度。如果我们提前设置了高度,然后才调用show()方法,那么是不会有用的。因为只有先显示,我们才能得到显示的具体参数,然后Window对象才能有具体的值才可以被我们设置。

有什么不太了解的,欢迎大家和我交流。
UE4初学笔记_02_编辑器界面 不同版本可能不一样,这里是4.25 UE4编辑器主界面(也称为关卡编辑器)主要用于构建世界场景和关卡以及放置资源。 1.菜单栏 2.关卡编辑器(Level Editor)工具栏 3.“模式”(Modes)面板 4.“内容浏览器”(Content Browser)面板 5.“视口”(Viewport)面板 6.“世界大纲视图”(World Outliner)面板 7.“细节”(Details)面板 1.菜单栏 菜单栏包含“文件”(File) 、“编辑”(Edit) 、“窗口”(Win. 阅读详情

相关推荐

Win11桌面图标小箭头去除与恢复:解决任务栏关联错误的完整指南

本文提供了一份完整的Win11桌面图标小箭头去除与恢复指南,重点解决了因错误方法导致的任务栏关联错误问题。通过分析注册表中IsShortcut键值与Shell Icons的原理,推荐安全的“替换图标资源法”,并提供了可一键执行的批处理脚本,确保在美化桌面的同时不影响系统功能与默认应用设置。

weixin_29288313的博客 944

AlertDialog 宽高设置、设置最大高度、样式设置

**AlertDialog**使用较多,可以setView自定义视图,也可以是直接使用setMultiChoiceItems多选与setSingleChoiceItems单选,因此使用起来较灵活,使用频率也较高。 但是AlertDialog根据其所包含的内容会发生变化,内容较少的话,其叫美观;若包含的内容较多,贼其高度很可能充斥整个屏幕,视觉上很难看,因此我们可以设定最大的高度,使其显示更加美观、自然。 1 若知道具体内容的大小: indow window = dialog.getWindow();...

qq_42811161的博客 7029

macOS安装Cplex+yalmip

macOS安装Cplex+yalmip

DS 4248

如何修改AlertDialog弹出界面的大小

修改AlertDialog的宽高无效

An_light的博客 2098

从零开始学DAG:用dagitty软件快速构建因果图的5个步骤

本文为初学者提供了使用dagitty软件快速构建因果图的5个实用步骤。通过一个公共卫生研究实例,详细演示了如何从定义核心变量开始,逐步引入混杂、中介和碰撞变量,最终利用dagitty的自动分析功能识别最小充分调整集,从而科学指导研究设计与统计分析,有效提升因果推断的严谨性。

ii567的博客 800

华为昇腾 910B 实战:DeepSeek-R1 蒸馏模型高效部署与性能调优全解析

本文详细解析了在华为昇腾910B硬件平台上高效部署DeepSeek-R1蒸馏系列模型(14B/32B版本)的完整实战流程。内容涵盖从MindIE环境搭建、镜像获取、模型准备,到服务配置、内存参数调优、性能测试及常见问题排查,为开发者提供了基于昇腾910B进行大模型部署与优化的全链路指南。

weixin_28235513的博客 210

Android Dialog相关设置

1.AlertDialog宽高设置,设置最大高度 AlertDialog可以setView自定义视图,也可以直接使用setMultiChoiceItems多选与setSingleChoiceItems单选,因此使用起来较灵活,使用频率也较高。 但是AlertDialog高度会根随其所包含的内容发生变化,若包含的内容较多,其高度很可能充斥整个屏幕,视觉上很难看,因此可以设定最大的高度,使其显示更加美观、自然。 1)若知道具体内容的大小: window window = dialog.getWindow

zenmela2011的专栏 5059

第十二段:基于env的重用

现代芯片的验证通常分为两个层次, 一是模块级别( block level, 也称为IP级别、 unit级别) 验证, 二是芯片级别( 也称为SOC级别) 验证。 一个大的芯片在开发时, 是分成多个小的模块来开发的。 每个模块开发一套独立的验证环境, 通常每个模块有 一个专门的验证人员负责。 当在模块级别验证完成后, 需要做整个系统的验证。 假设某个系统分成了三个模块,如下图: 这三个模块在模块级别验证时, 分别有自己的driver和s...

年糕的博客 423

关于AlertDialog.Builder犯的一个错和自定义布局的限制宽高一个知识点

先看错误代码AlertDialog.Builder builder=new AlertDialog.Builder(getApplicationContext()); builder.setTitle("温馨提示") .setMessage("确定要离开吗?") .setPositiveButton("确定", new

zhouxin1233的博客 1757

安全与加密常识(10)linux系统证书管理

1. 将自定义CA证书(如my-ca.crt)放到源目录# 2. 编辑配置文件,启用该证书(末尾添加一行 my-ca.crt)# 3. 执行命令同步(核心工作环节)# 4. 验证结果:检查是否生成哈希链接和合并到证书束ls /etc/ssl/certs/my-ca.pem # 证书文件ls /etc/ssl/certs/$(openssl x509 -hash -noout -in /usr/share/ca-certificates/my-ca.crt).0 # 哈希链接。

二进制君 285

解决宿主机Ping不通虚拟机的问题

在使用虚拟机的过程中,我们常常会遇到宿主机和虚拟机之间无法相互通信的问题。具体来说,我们要查看虚拟机和宿主机的 IP 地址,然后尝试进行 Ping 测试。在某些情况下,我们可能发现 Ping 虚拟机不通,接下来我将分享如何解决这个问题。

howard2005的专栏 7万+

Android 自定义AlertDialog设置宽高并去掉默认的边框

在我们写自定义AlertDialog的时候,自定义AlertDialog的宽高并非是AlertDialog的layout中的宽高,Android就是这么奇怪。试了很多方法一点用也没有,不过有一个办法可以设置自定义AlertDialog的宽高就是AlertDialog的layout中的宽高,并去掉AlertDialog的默认边框。3、在res文件夹的drawable文件夹新建几个xml文件,并把以下几个的xml代码复制进去。1、先写一个自定义的AlertDialog。

UrasakiNakajima的博客 2383

详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署

YOLO(You Only Look Once)系列算法因其高效、准确等特点而备受瞩目。由2023年Ultralytics公司发布了YOLO的最新版本YOLOv8是结合前几代YOLO的基础上的一个融合改进版。本文YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署,从网络结构的讲解从模型的网络结构讲解到模型的部署都有详细介绍,同时在本专栏中还包括YOLOv8模型系列的改进包括个人提出的创新点,传统卷积、注意力机制、损失函数的修改教程,能够帮助你的论文获得创新点。

Snu77的博客 8万+

Android造轮子遇到的坑:自定义Dilaog,AlertDialog黑边,设置宽度,高度等问题(亲测有效)

前言 可能有很多猿兄遇到和我类似的情况,就是项目中用到了很多Dialog, 有些Dilaog的风格并不是统一的,虽然不影响功能,但是使用起来体验还是不好. 这不最近有点时间了, 着手统一项目中的所有Dialog的风格,及封装. 如有错误的地方,欢迎大家拍砖! 一. AlertDialog踩坑,出现背景黑边的情况 因为代码里面AlertDialog用的比较多,...

mawei7510的博客 947

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android自定义AlertDialog及设置宽高无效问题

本篇记录自定义AlertDialog以及遇到的问题 自定义AlertDialog 先上效果图 创建布局 首先我们要创建想要的dialog布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_.

阿秋的Blog 3444

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android:修改AlertDialog的背景并动态控制AlertDialog的最大高度

一、为什么要修改AlertDialog的背景并动态控制其最大高度呢? 关于为啥要修改背景并控制其最大高度,其实只看下面这一张图就够了。 image.png 在上面的图中,我们可以看出,AlertDialog 中内容的默认背景是一张白底的具有大约 8px 圆角的背景图。然后我们查看 Theme.Holo.Light.Dialog中的windowBackground定义,发现该背景图其实是一张...

CnPeng 840

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android修改AlertDialog宽和高以及设置AlertDialog的背景

不知道你们试过了吗,AlertDialog在我们给他设置我们自己的布局的时候他的宽度不论我们怎么设置他都是不变的,要想改变宽和高我们可以动态的去修改他的宽度好高度 直接上代码 // 1. 布局文件转换为View对象 LayoutInflater inflater = LayoutInflater.from(context); RelativeLayout layo

liao5214的博客 2万+

自定义AlertDialog列表样式

1.      定义布局文件:alertdialog_item.xml,因为列表的每一项的样式都是从布局文件设置的,注意的是布局文件是一个TextView  "1.0" encoding="utf-8"?> "http://schemas.android.com/apk/res/android"     android:id="@+id/alertdialog_item"     andr

qing15800260569的专栏 1061

自定义AlertDialog内容居中显示

AlertDialog dialog = new AlertDialog.Builder(getActivity()).create(); dialog.show(); Window window = dialog.getWindow(); window.setContentView(R.layout.dialog_image); WindowManager windowManager = g

u011884112的博客 6133

android2.3 fragment,Android 3.2 - 在DialogFragment中自定义AlertDialog按钮

我创建了一个扩展DialogFragment的类,它在onCreateDialog方法中返回一个AlertDialog,就像here一样。问题是,我想增加标准(正)按钮的高度,但我无法控制它来改变它的高度。当我在DialogFragment的onCreateDialog方法中执行以下操作时mAlertDialog = new AlertDialog.Builder(getActivity()).s...

weixin_39625008的博客 242

Android AlertDialog去除阴影

我整理的一些关于【自定义样式,User,android】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/eDOcp1在Android中去除AlertDialog的阴影 在Android开发中,AlertDialog是一种常用的用户交互组件。然而,有时我们可能希望去除Alert...

weixin_37081062的博客 275

AlertDialog自定义内容区时宽高问题

创建AlertDialog,并使用setView()方法使用自定义的layout填充。虽然layout根容器宽高都设置为“match_parent”,但是最终显示的宽高都非常小。

llxy21的博客 6006

AlertDialog内部自定义View宽高问题

AlertDialog内部View的高度与设定不符原因及解决方法

qq_38267671的博客 579

在线直播源码,自定义AlertDialog设置宽高并去掉默认的边框

以上就是在线直播源码,自定义AlertDialog设置宽高并去掉默认的边框, 更多内容欢迎关注之后的文章。在线直播源码,自定义AlertDialog设置宽高并去掉默认的边框。1、先写一个自定义的AlertDialog。2、AlertDialog的layout。

云豹网络科技 290

Dialog设置自定义高度

String items[] = new String[]{"菜单1","菜单2","菜单3","菜单4"};         AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(                 "菜单").setItems(items, new DialogInterface.OnClic

wj5585615的博客 6634

android AlertDialog自定义大小

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(LayoutInflater.from(context).inflate(R.layout.select_birthday_item,null)); builder.setTitle("选择出生日期"); AlertDialog al

Pig 1万+
上一篇: java中super和this的区别及用法
下一篇: Android权限列表
潘建成
博客等级 码龄12年 139粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值