首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当软键盘打开时,DialogFragment不会上升

是因为DialogFragment默认是以Dialog的形式显示在屏幕上的,而软键盘的弹出会导致屏幕高度减小,从而导致DialogFragment被软键盘遮挡住。

为了解决这个问题,可以通过设置DialogFragment的windowSoftInputMode属性来调整软键盘的行为。具体来说,可以使用以下两种方式:

  1. 在DialogFragment的onCreate方法中设置windowSoftInputMode属性:@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogFragmentStyle); } @Override public void onStart() { super.onStart(); getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); }在上述代码中,通过调用setStyle方法设置DialogFragment的样式为STYLE_NORMAL,并在onStart方法中通过getDialog().getWindow().setSoftInputMode方法设置windowSoftInputMode属性为SOFT_INPUT_ADJUST_RESIZE,表示当软键盘弹出时,DialogFragment会自动调整大小以适应屏幕。
  2. 在DialogFragment的样式文件中设置windowSoftInputMode属性: 在res/values/styles.xml文件中定义一个样式,如下所示:<style name="DialogFragmentStyle" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowSoftInputMode">adjustResize</item> </style>然后在DialogFragment的onCreate方法中调用setStyle方法设置DialogFragment的样式:@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogFragmentStyle); }通过上述方式,可以将DialogFragment的样式设置为自定义的DialogFragmentStyle样式,并在该样式中设置windowSoftInputMode属性为adjustResize,从而实现当软键盘弹出时,DialogFragment会自动调整大小以适应屏幕。

总结起来,通过设置DialogFragment的windowSoftInputMode属性为SOFT_INPUT_ADJUST_RESIZE或在样式文件中设置windowSoftInputMode属性为adjustResize,可以解决当软键盘打开时,DialogFragment不会上升的问题。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DialogFragment自动弹出软键盘,消失时关闭软键盘

hideSoftInputFromWindow(binding.etChat.windowToken, 0) } 复制代码 在DialogFragment显示弹出软键盘DialogFragment...显示时有两种方式弹出软键盘: 1、在onViewCreated中发送一个延时任务 etChat.postDelayed({ showSoftInput() }, 200) 复制代码 注意:如果直接调用显示键盘不会起作用...复制代码 在DialogFragment消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法...onCancel(dialog: DialogInterface) { hideSoftInput() super.onCancel(dialog) } 复制代码 这样处理发现软键盘没有关闭...mService.hideSoftInput 断点发现当在onCancel中关闭软键盘 mServedView为null,所以走不到关闭代码,看一下mServedView在哪赋值为null的 void

5K40

使用POI打开Excel文件遇到out of memory该如何处理?

当我们开发处理Excel文件,Apache POI 是许多人首选的工具。但是,随着需求的增加、工程复杂,在打开复杂的Excel文件的时候可能会出现一些异常情况。...根据测试,打开50万个单元格数据的时候,就会遇到OOM(OutOfMemory)的问题;或者打开包含有20万个合并单元格(包含border或者背景色)的时候,也会遇到OOM(OutOfMemory)...(file); //打开文件后进行其他处理 以上代码在处理大型Excel文件时会导致OOM问题的发生。...第一个办法,对于仅导入数据很有效。但Excel是有样式的情况,把Excel转成CSV就会导致样式丢失,所以pass了这个方法。...经过一些尝试,发现是同一间构建的workbook太多了,减少到4个,单元测试就可以正常跑完。 这样来看,POI的问题还真是让人挺头疼。

27210

Android 底部按钮被软键盘顶起问题解决

如果界面中有可滑动控件,显示效果跟 adjustUnspecified 显示效果一样;如果界面中没有可滑动控件,软键盘可能会盖住一些控件(布局的位置不会发生变化,可能获取了焦点的控件被软键盘盖住)。...一般来说,我们的布局分为两种 底部按钮被滚动布局包裹 底部按钮不被滚动布局包裹 第一种布局是不会出现软键盘把底部按钮顶起的情况,首先软键盘打开实际上是一个 Dialog,而我们在配置文件内的 adjustResize...第二种情况通常为一个继续按钮始终处于页面的底部,中间的内容可以滚动,根布局的内边距等于软键盘高度,底部按钮就看起来像是被顶起。...1、监听软键盘打开收起 const val SOFT_KEY_BOARD_MIN_HEIGHT = 100 fun Fragment.registerFragment(bottomView: View...bottomView.visibility = View.VISIBLE } } } } 2、修改 windowSoftInputMode adjustPan 如果设置了这个属性,软键盘弹出的时候

1.9K20

移动端那些戳中你痛点的软键盘问题及解决方法

(对于这点,ios本身是支持的,但是安卓却并不会主动让输入框出现在可视区域内) 4、对于部分ios系统下的部分微信webview内,发现软键盘收起,滚动上去的页面没有滚动下来,造成了下面区域留出了一片灰色的区域...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域,输入框失去焦点,软键盘收起。...但是,触发键盘上的收起按钮键盘,输入框并不会失去焦点,同样软键盘收起。 ? ? 2、为什么fixed会失效 既然ios键盘弹起,页面会上移,那么为什么fixed会失效呢。...收起键盘后,「滚动过头」的部分会被弹回,fixed 元素发生重新计算,但页面并不会回到与打开键盘前相同的位置。...在 Android 上,监听 webview 高度会变化,高度变小获知软键盘弹起,否则软键盘收起。 // IOS 键盘弹起:输入框被聚焦IOS键盘会被弹起 inputRef?.

7.7K30

Android 沉浸式解析和轮子使用

提示气泡——第一次进入沉浸模式,系统将会显示一个提示气泡,提示用户如何再让系统栏显示出来。...请注意,如果为了测试你想强制显示提示气泡,你可以先将应用设为沉浸模式,然后按下电源键进入锁屏模式,并在 5 秒中之后打开屏幕。 沉浸模式—— 这张图展示了隐藏了系统栏和其他UI控件的状态。...滑动的操作并不会清空任何标签,也不会触发系统 UI 可见性的监听器,因为暂时显示的导航栏并不被认为是一种可见的状态。...另例:需要注意dialogFragment和Dialog是有自己的window,该window是属于所属Activity的子window,所以设置dialogFragment和Dialog的沉浸式改变的是自己...app:titleTextColor="@android:color/white" /> ② 使用系统的fitsSystemWindows属性,使用该属性不会导致输入框与软键盘冲突问题

3.2K10

仿iOS底部弹框实现及分析

2 实现弹框: 因为后来谷歌推荐使用的DialogFragment,所以我们此处弹框也是使DialogFragment。...再继承DialogFragment来实现我们的IOSDialogFragment: IOSDialogFragment.java: ?...3 弹框从下而上显示: 我们看过ios的弹框效果,是从底部从下而上升起,然后消失的时候也是从上而下消失。...所以消失的时候我们不能单纯的让DialogFragment执行dismiss(),而是先让弹框执行下移的动画效果,然后再dismiss()。...6 点击空白让弹框消失问题: 点击上方一些空白处,我们会发现我们的弹框会直接消失,而不会像我们上面点击按钮点击事件那样,弹框先往下移动再消失,因为DialogFragment默认点击弹框外的时候

1.8K10

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

Android系统因为配置变化关闭你的Activity的时候,你的Activity中被标识保持的fragments不会被销毁。...从效果图可以看到,无论如何旋转不会重启Activity. 效果图: 6、旋转屏幕的最佳实践 下面要开始今天的难点了,就是处理文章开始所说的,异步任务在执行时,进行旋转,如果解决上面的问题。...下面我们希望有一种解决方案:在加载数据旋转屏幕,不会对加载任务进行中断,且对用户而言,等待框在加载完成之前都正常显示: 当然我们还使用Fragment进行数据保存,毕竟这是官方推荐的: OtherRetainedFragment...当然了,运行过程中Activity不断的重启,我们也提供了setActivity方法,onDestory,会setActivity(null)防止内存泄漏,同时我们也会关闭与其绑定的加载框;onCreate...传入新的Activity,我们会在再次打开一个加载框,当然了因为屏幕的旋转并不影响加载的数据,所有后台的数据一直继续在加载。

2.1K20

android推荐使用dialogFrament而不是alertDialog

DialogFragment在android 3.0被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。...2、 好处与用法 使用DialogFragment来管理对话框,旋转屏幕和按下后退键可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。...MainActivity中需要实现我们的接口LoginInputListener,实现我们的方法,就可以实现当用户点击登陆,获得我们的帐号密码了: c)  MainActivity   package...左边为模拟器,右边为我的手机~~~~~ 7、屏幕旋转 当用户输入帐号密码,忽然旋转了一下屏幕,帐号密码不见了~~~是不是会抓狂 传统的new AlertDialog在屏幕旋转,第一不会保存用户输入的值...可以看到,传统的Dialog旋转屏幕就消失了,且后台log会报异常~~~使用DialogFragment则不受影响。 好了,关于DialogFragment的介绍结束~~~~ 源码点击下载

2.3K50

Ionic3学习笔记(九)关于 Android 端软键盘弹出后界面被压缩的问题

软键盘弹出后,Android 端的 tabs 移到了软键盘的上面,再仔细一看,整个界面都被压扁了,输入框也不知道去哪儿了。...于是又想到是不是 android:windowSoftInputMode 属性出了问题,打开 AndroidManifest.xml,发现 Ionic 3 将 android:windowSoftInputMode...stateUnspecified 未指定软键盘的状态,系统将自动选择一个合适的状态或依赖于主题中的设置。 stateUnchanged 当前界面的软键盘状态取决于上一个界面的软键盘状态。...stateHidden 用户选择 Activity 软键盘总是被隐藏。 stateAlwaysHidden 该 Activity 主窗口有输入需求软键盘总是被隐藏。...stateVisible 软键盘通常可见。 stateAlwaysVisible 用户选择 Activity 软键盘总是可见。

93220

【H5】209-可能这些是你想要的H5软键盘兼容方案

在IOS12 上,微信版本 v6.7.4 及以上,输入框获取焦点,键盘弹起,页面(webview)整体往上滚动,键盘收起后,不回到原位,导致键盘原来所在位置是空白的。...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域,输入框失去焦点,软键盘收起。...但是,触发键盘上的收起按钮键盘,输入框并不会失去焦点,同样软键盘收起。 ? ?...输入框位于页面下部位置,在 IOS 上,会将 webview 整体往上滚一段距离,使得该获取焦点的输入框自动处于可视区,而在 Android 则不会这样,它只会改变页面高度,而不会去滚动到当前焦点元素到可视区...兼容 IOS12 + V6.7.4+ 如果你在用 IOS12 和 V6.7.4+版本的微信浏览器打开上面表单输入的 demo ,就会惊奇的发现键盘收起后,原本被滚动顶起的页面并没有回到底部位置,导致原来键盘弹起的位置

3.9K12

AndroidMainifest标签说明2——<activity>

android:finishOnTaskLaunch 默认false 假设再次打开这个事务那么原来存在的会不会关闭。“true”原来的打开的就关闭了。“false”不关闭。...在动作条显示操作项,约束的水平空间。而不是少数出如今屏幕上方操作栏中的行动项目。操作栏被分成顶部导航部分和操作项的底部栏。这保证了空间的合理量可供不仅为行动项目,同一候也为在顶部导航和标题元素。...菜单项不会在两个栏分裂;他们总是一起出现。 android:windowSoftInputMode 窗体软键盘模式。...“stateUnchanged” 软键盘上一次保存在不论什么状态,是否可见或隐藏,活动走到前台。 “stateHidden” 软键盘是隐藏的,当用户选择activity。...“stateVisible” 可见的,activity激活的时候 “stateAlwaysVisible” 总是可见的 “adjustUnspecified” 未指定活动的主窗体的大小是否为软键盘

1.5K00

DialogFragment踩坑记

普通的Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示的逻辑 推荐使用DialogFragment 要选android X下的DialogFragment...DialogFragment有两个不同的包名 androidx.fragment.app.DialogFragment android.app.DialogFragment 为了兼容各个Android...版本的,记得要选择第一种DialogFragment,当然,系统源码也很贴心的把它Framework的DialogFragment设置为不推荐使用,而且还注明让你使用support包下面的DialogFragment...#dismissAllowingStateLoss方法,就不会走到checkStateLoss,就可以轻易规避这个问题了 特别强调的是,这个报错自测阶段很不容易暴露出来,但是一上线上环境就容易发生,需要注意规避...其实内部是通过commit方法,而不是commitAllowingStateLoss方法,所以业务方有可能在页面不可见的时候调用展示

1.9K30

解决Android软键盘弹出覆盖h5页面输入框问题

之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家: 系统:Android 条件:输入框在可视区底部或者偏下的位置...line-height:48px; font-size:18px; color:#fff; position:absolute; bottom:0; } </style 3.真机模拟:进行真机与电脑连接调试,打开...chrome的chrome://inspect,(如下图所示),发现键盘未弹出html高度为512px,键盘弹出后html的高度为288px(减少区域的为软键盘区域),怀疑是否是因为html、body...解决方案: 方案1 页面渲染完成后,通过JS动态获取屏幕可视区高度(注:屏幕旋转后,需重新获取屏幕高度并赋值),并将其赋值到body的height,这样body的高度一直都是屏幕的高度,软键盘弹出后,...会将body向上推(因为body有了固定高度,不会再继承html的自适应高度),使输入框置到可视区内,代码如下: document.body.style.height = window.screen.availHeight

5.2K30

可能这些是你想要的H5软键盘兼容方案

在IOS12 上,微信版本 v6.7.4 及以上,输入框获取焦点,键盘弹起,页面(webview)整体往上滚动,键盘收起后,不回到原位,导致键盘原来所在位置是空白的。...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域,输入框失去焦点,软键盘收起。...但是,触发键盘上的收起按钮键盘,输入框并不会失去焦点,同样软键盘收起。 ?...输入框位于页面下部位置,在 IOS 上,会将 webview 整体往上滚一段距离,使得该获取焦点的输入框自动处于可视区,而在 Android 则不会这样,它只会改变页面高度,而不会去滚动到当前焦点元素到可视区...兼容 IOS12 + V6.7.4+ 如果你在用 IOS12 和 V6.7.4+版本的微信浏览器打开上面表单输入的 demo ,就会惊奇的发现键盘收起后,原本被滚动顶起的页面并没有回到底部位置,导致原来键盘弹起的位置

7.9K20

解决Android中自定义DialogFragment解决宽度和高度问题

关于详解Android应用中DialogFragment的基本用法,大家可以参考下。 1、 概述 DialogFragment在android 3.0被引入。...2、 好处与用法 使用DialogFragment来管理对话框,旋转屏幕和按下后退键可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。...且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。...上面会通过例子展示这些好处~ 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...下面通过示例代码给大家介绍下Android中自定义DialogFragment解决宽度和高度问题 Android中自定义DialogFragment解决宽度和高度问题但是我们很多时候想把DialogFragment

4.3K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券