全屏Activity弹出键盘不顶起布局

这篇具有很好参考价值的文章主要介绍了全屏Activity弹出键盘不顶起布局。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近遇到的一个问题是全屏Activity中要求弹出键盘不顶起布局,首先windowSoftInputMode的取值是有多个的,在全屏场景下adjustPan是没有用的,需要使用adjustResize首先确保键盘不顶起布局。

        android:windowSoftInputMode="stateHidden|adjustResize"

但是单纯设置windowSoftInputMode在布局方面又会有新的问题,那就是可能需要在键盘上方展示文本框,但是键盘的高度是不固定的,在全屏场景下布局不被顶起,因此文本框会被键盘遮挡,为解决这个问题,需要在键盘弹起时测量键盘的高度,代码如下文章来源地址https://www.toymoban.com/news/detail-705058.html

//在键盘弹起的地方对文本库增加addOnGlobalLayoutListener,我xml的布局是ConstraintLayout
            binding.etDiy.viewTreeObserver
                .addOnGlobalLayoutListener {
                    val rect = Rect()
                    binding.root.getWindowVisibleDisplayFrame(rect)
                    val screenHeight = binding.root.height
                    val keypadHeight = screenHeight - rect.bottom

                    if (keypadHeight > screenHeight * 0.15) {
                        if (isSet) return@addOnGlobalLayoutListener
                        isSet = true
                        val constraintSet = ConstraintSet()
                        constraintSet.clone(binding.root)

                        constraintSet.connect(
                            binding.viewBackground.id,
                            ConstraintSet.BOTTOM,
                            ConstraintSet.PARENT_ID,
                            ConstraintSet.BOTTOM,
                            keypadHeight
                        )
                        constraintSet.applyTo(binding.root)
                    } else {
                        if (!isSet) return@addOnGlobalLayoutListener
                        isSet = false
                        val constraintSet = ConstraintSet()
                        constraintSet.clone(binding.root)
                        constraintSet.connect(
                            binding.viewBackground.id,
                            ConstraintSet.BOTTOM,
                            ConstraintSet.PARENT_ID,
                            ConstraintSet.BOTTOM,
                            0
                        )
                        constraintSet.applyTo(binding.root)
                    }
                }

到了这里,关于全屏Activity弹出键盘不顶起布局的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开启Android学习之旅-5-Activity全屏

    Android 两种方式设置全屏: 通过 getWindow().getDecorView()方法拿到当前Activity的DecorView,再调用 setSystemUiVisibility() 方法来改变系统UI的显示,这里传入了 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 和 View.SYSTEM_UI_FLAG_LAYOUT_STABLE, 表示 Activity 的布局会显示再状态栏上面,最后调用一下 setStatusBarColo

    2024年02月02日
    浏览(43)
  • Android全屏弹出Dialog显示状态栏和导航栏的问题及解决方案

    在移动端开发中,有时候我们需要在Android应用中弹出一个全屏的Dialog。然而,当我们尝试实现这样的Dialog时,可能会遇到一个问题:状态栏和导航栏在全屏Dialog中仍然可见,这可能会影响用户体验。本文将介绍如何解决这个问题,并提供相应的源代码。 问题描述: 当我们使

    2024年02月05日
    浏览(41)
  • Android点击EditText禁止弹出软键盘

    今天做了一个点击EditText获取焦点,不弹出设备系统键盘,只弹出自定义键盘,在网上能查到很多实现这一功能的方法,试了很多,只有一种对我来说是好用的,做个记录方便以后使用 方法一:这个对我来说好用的,也是唯一一个好用的,还会多分享几个网上说的一些好用的

    2024年02月11日
    浏览(41)
  • android 点击输入框editText后点击textview会弹出软键盘问题解决

    在 Android 中,当一个 EditText 或其它可以输入文本的控件获取焦点时,系统会自动弹出软键盘以便用户输入。当软键盘弹出后,点击其它控件,比如 TextView,也会触发 EditText 失去焦点的事件,从而导致软键盘关闭。这是 Android 系统默认的行为。 但是,在某些情况下,用户希望

    2024年02月15日
    浏览(56)
  • h5键盘弹起底部菜单(按钮)被顶起-vue自定义指令解决

            开发H5中测试过程中发现在安卓手机上,input/textarea 获取焦点 软键盘弹出 会让absolute/fixed或者使用flex局部 固定在底部的元素(固定底部栏)顶起来问题;在搜索后发现安卓上在键盘弹起的时候浏览器   body height 100%   其实只有键盘以上范围,这里决解方法有很多可

    2024年02月12日
    浏览(56)
  • uniapp软键盘谈起遮住输入框和头部被顶起的问题解决

     推荐: pages.json中配置如下可解决头部被顶起和表单被遮住的问题。       {             \\\"path\\\": \\\"pages/debug/protocol/tagWord\\\",             \\\"style\\\": {                 \\\"app-plus\\\": {                     \\\"softinputMode\\\": \\\"adjustResize\\\"                 }             }  

    2024年02月13日
    浏览(43)
  • Flutter 解决App登录页面软键盘遮挡住登录按钮或顶起底部控件的问题

    问题点 最终效果图 问题点: 当前使用的是 Column 布局,弹窗软键盘后页面超出范围。 A RenderFlex overflowed by 0.533 pixels on the bottom. 解决方式 在 Scaffold 或者 CupertinoPageScaffold 中设置 resizeToAvoidBottomInset 为false 不修改 resizeToAvoidBottomInset 属性的话,可以使用 ListView 、 SingleChildScrol

    2024年02月04日
    浏览(56)
  • Android 全局监听软键盘弹起隐藏 动态修改布局并适配无限循环的问题

    要在 Android 应用中全局检测软键盘的弹起,您可以使用 ViewTreeObserver.OnGlobalLayoutListener 监听器来监听布局树的变化。当软键盘弹起或隐藏时,布局树会发生变化,因此您可以在监听器中捕获这些变化。 在上面的代码中, rootView 是您布局的根视图,您需要将其替换为您实际布局

    2024年02月11日
    浏览(41)
  • vue使用vant中的popup层,在popup层中加搜索功能后,input框获取焦点 ios机型的软键盘不会将popup顶起来的问题

    1.使用vant的popup弹出层做了一个piker的选择器,用户需要在此基础上增加筛选功能。也就是输入框 2.可是在ios机型中,input框在获取焦点以后,ios的软键盘弹起会遮盖住我们的popup层,导致体验不是很好 3.在大佬的解答及帮助下,采用窗口滚动的方式解决此方法 4.在获取焦点时 将整个

    2024年02月11日
    浏览(36)
  • H5 输入框键盘弹出收起

    1 . 安卓系统 下点击输入框 键盘弹出以及收起 会使得webview 的窗口高度发生变化 键盘弹出的时候: webview的原高度 = 键盘的高度 + webview 现在的窗口高度 Ios 系统  下 键盘弹出收起不会影响webview 的窗口高度发生变化 键盘弹出的时候 可以监听focusin事件; 键盘收起的时候 可以

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包