文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 关于键盘弹出顶出输入框并不上移布局处理

2023-08-31 12:18

关注

键盘弹出时想输入框上升到适应键盘高度,之前是直接取键盘高度设置底部margin实现的,但是在测试时发现如果在键盘弹出时切换输入法键盘高度可能发生变化,直接设置margin就不能满足了。

然后试了下网上的方法,在AndroidManifest.xml对应的activity里添加

android:windowSoftInputMode="adjustPan"

或者

android:windowSoftInputMode="adjustResize",

但是这两种方式都不适应我要做的场景。

使用"adjustPan"在键盘弹出时会导致布局整体上移,如果布局顶部有固定的标题栏会被顶出去。

使用"adjustResize",要搭配在activity的layout里用android:fitsSystemWindows="true",这个把标题栏放在设置android:fitsSystemWindows的布局外面就不会有影响,但是用这个方法不适用在输入框下面还有其他view的场景,会把输入框底部的view也顶出来。

然后看到另一种解决方法:在该博文的解决办法三。Android 多种完美解决输入法覆盖输入框的办法_setsoftinputmode_看美丽风晴的博客-CSDN博客

不过监听处理的滑动高度有点问题,在设置高度后没考虑到改变后会再触发一次监听,且如果在弹出后切换输入法键盘高度发生改变获取的滑动距离是不对的,没有把已滑动的部分加上。下面是修改后的:

new ViewTreeObserver.OnGlobalLayoutListener() {    @Override    public void onGlobalLayout() {        Rect rect = new Rect();        //取得 rootView 可视区域        mRootView.getWindowVisibleDisplayFrame(rect);        //取得 rootView 不可视区域高度 (被其他View遮挡的区域高度)        int rootInvisibleHeight = mRootView.getRootView().getHeight() - rect.bottom - NavigationUtils.getCurrNavigationBarHeight();        if (rootInvisibleHeight > 0) {            int[] location = new int[2];            //取得 scrollToInput 的坐标            mLine.getLocationInWindow(location);            //计算滚动高度(rootView),这样 (scrollToInput)在可视区域            int srollHeight = (location[1] + mLine.getHeight()) - rect.bottom + mRootView.getScrollY();            if (srollHeight == 0) {                return;            }            mRootView.scrollTo(0, srollHeight);        } else {            //隐藏软键盘            mRootView.scrollTo(0, 0);        }    }};

来源地址:https://blog.csdn.net/qq_43679375/article/details/131403164

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯