博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎么让软键盘弹出时,部分控件上移
阅读量:5804 次
发布时间:2019-06-18

本文共 1669 字,大约阅读时间需要 5 分钟。

之前写注册页面的时候,UI同学给我提了个意见,让弹出软键盘时候,左上角的标题“注册”不动,中间内容往上移动,效果这样

怎么让软键盘弹出时,部分控件上移
怎么让软键盘弹出时,部分控件上移
经过查阅资料和多方实践,解决方法如下

1、先要设置页面软键盘模式,这样每次软键盘弹出后布局高度会减少软键盘的高度

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN                | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

2、找出内容view,在每次布局为软键盘弹出减小高度时监听,改变内容view

mVContent = findViewById(android.R.id.content);ViewTreeObserver.OnGlobalLayoutListener mLsnrLayout =            new ViewTreeObserver.OnGlobalLayoutListener() {                @Override                public void onGlobalLayout () {                    Rect rect = new Rect();                    mVContent.getWindowVisibleDisplayFrame(rect);                    int height = rect.height();                    boolean isImmShow = height < UcApp.sHeightPx;                    if ( isImmShow != mIsImmShow ) {                        mIsImmShow = isImmShow;                        mUbtnCommit.setVisibility(isImmShow ? View.INVISIBLE : View.VISIBLE);                    }                }            };mVContent.getViewTreeObserver().addOnGlobalLayoutListener(mLsnrLayout);

XML格式是这样的,标题我是在基类上设置加上的

怎么让软键盘弹出时,部分控件上移

public void setTitle (String txt) {    if ( null == mTvTitle ) {        mTvTitle = new TextView(UcApp.sCtx);        ((FrameLayout) getWindow().getDecorView()).addView(mTvTitle);        ViewUtils.inst(mTvTitle)                .setMargins(119, 54, 0, 0)                .setTextSize(42);        mTvTitle.setTypeface(Typeface.DEFAULT_BOLD);        mTvTitle.setTextColor(ComUtils.getClr(R.color.white_f2f2f2_60));    }    mTvTitle.setText(txt);}

就是设置了margin

因为内容布局是竖直居中的,标题是margin写死的,所以布局高度变了以后内容移动标题不动。

希望这篇文章能帮助大家,大佬勿喷~

转载于:https://blog.51cto.com/14311106/2392521

你可能感兴趣的文章
Codeforces 832C - Strange Radiation
查看>>
linux下使用过的命令总结(未整理完)
查看>>
STS新建MavenProject后java文件夹不出来的问题
查看>>
删除PO
查看>>
C# 获取外网IP和运营商和城市
查看>>
Springboot集成Swagger2
查看>>
stat
查看>>
报空指针异常
查看>>
如何配置mysql的超时时间
查看>>
centos 6.5环境下分布式文件系统MogileFS工作原理及分布式部署实现过程
查看>>
Windows2008 r2 x64下安装FTP工具File Zilla server报错:could not load tls libraries filezilla
查看>>
Java_spark简单例子
查看>>
imshow(K)和imshow(K,[]) 的区别
查看>>
poj3190 Stall Reservations
查看>>
CORS 跨域问题, 以及作为api server 的正确配置, 后台 nginx 配置
查看>>
loadrunner录制脚本、回放脚本遇到的问题
查看>>
16进制数至字符串转换
查看>>
Java Web整合开发(13) -- XML
查看>>
标准库Queue的实现
查看>>
如何使用Python3.4连接MySQL
查看>>