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

相关文章

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

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

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

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

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

鸿蒙开发中实现自定义弹窗 (CustomDialog)

效果图 #思路 创建带有 @CustomDialog 修饰的组件 ,并且在组件内部定义controller: CustomDialogController 实例化CustomDialogController,加载组件,open()-> 打开对话框 , close() -> 关闭对话框 #定义弹窗 (CustomDialog)是什么? CustomDialog是自定义弹窗,可用于广告、中

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if