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

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

键盘弹出时想输入框上升到适应键盘高度,之前是直接取键盘高度设置底部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博客

不过监听处理的滑动高度有点问题,在设置高度后没考虑到改变后会再触发一次监听,且如果在弹出后切换输入法键盘高度发生改变获取的滑动距离是不对的,没有把已滑动的部分加上。下面是修改后的:文章来源地址https://www.toymoban.com/news/detail-602191.html

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);
        }
    }
};

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

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包