dialog弹窗显示不全

2024-06-17 20:20
文章标签 显示 不全 弹窗 dialog

本文主要是介绍dialog弹窗显示不全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

弹框显示不全,编辑框不可见

打开可编辑的dialog对话框后,编辑view获取到焦点弹出软键盘输入时,由于屏幕分辨率和屏幕高度问题,导致软键盘高度太高向上挤压dialog对话框,当dialog对话框被向上挤压到状态栏位置时,dialog对话框的高度会自动减小,最终会遮挡住dialog对话框中的部分控件造成显示不全的问题,出现这种现象时,对话框中的可编辑控件的根布局使用一个scrollview控件包裹了子view,比如EditText,并且控件的高度设置成了包裹内容,dialog对话框高度降低,会使scrollveiw的高度降低,挤压了可显示区域的大小

出现这种情况时,dialog对话框与软键盘没有发生重叠覆盖的情况,这也是dialog对话框高度降低的原因之一,解决办法如下

软键盘弹出导致导致dialog对话框显示不全,可以修改软键盘的输入模式,使软键盘与dialog对话框重叠,防止软键盘挤压dialog弹框的可视空间

方法一,修改manifest.xml文件配置

<!--在Manifest.xml文件中给要弹出dialog的Activity配置软键盘输入模式-->
<activityandroid:name=".MainActivity"android:exported="true"android:windowSoftInputMode="adjustNothing"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

方法二,修改Activity

//在Activity的onCreate函数中,调用setContentView之前添加软件盘输入模式
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);

方法三,从Fragment中弹出Dialog

//在Fragment中点击Button或开关打开可编辑的dialog并弹出软件盘,通过监听根布局的UI变化,监听到dialog view可见时,设置dailog的输入模式
//此方法最好是写到fragment的onResume()函数中,此时所有的View及控件都已初始化完毕
View decorView = getActivity().getWindow().getDecorView();
ViewTreeObserver observer = decorView.getViewTreeObserver();
//监听全局的布局变化
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {//自定义的可编辑dialogValidatedEditTextPreference editText = (ValidatedEditTextPreference)getPreferenceScreen().findPreference("device_name");if (editText != null) {//获取dialogAlertDialog dialog = (AlertDialog) editText.getDialog();if (dialog != null) //设置dialog窗口软键盘的输入模式dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);}}}
});

这篇关于dialog弹窗显示不全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070416

相关文章

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,