美文网首页
记一次解决键盘布局冲突闪动的过程

记一次解决键盘布局冲突闪动的过程

作者: iSanShu | 来源:发表于2018-02-04 20:44 被阅读0次

    上图:

    图中出现的两个问题:

    1:显示表情面板时键盘把布局顶上去了     2:显示键盘时布局掉到底部再被键盘顶起来。

    问题1解决过程:

    先把根布局的LinearLayout换成自定义的LinearLayout(继承LinearLayout,重写onMeasure()方法,加上打印语句,点击表情图标然后看打印台情况)

    打印台信息

    分析:测试机分辨率为1080×1920。可以看到,,根布局的高度由861变为1692(除去状态栏和actionbar高度),界面各自重绘了一次,所以出现前面闪动的问题。完美的显示应该是高度一直为1692。

    解决思路:在点击表情图标时判断是否要从键盘切到表情面板,如果是则在根布局的onMeasure()方法手动给它一次1692的高度值,让布局按1692的高度绘制,解决了861那一帧。

    自定义根布局代码

    MainActivity的代码

    现在跑下代码试试看效果

    good,键盘把布局顶上去的问题解决了。然而仔细看还有另一个问题,就是从面板切到键盘时,布局先掉到底部然后被键盘顶起来。

    看打印台信息:

    分析:和上面的情况相反,此时是从1692转为861。很明显了,完美的显示高度应该是一直为861,而不是从1692到861。

    解决思路:跟上面一样,先判断是否从表情面板切到键盘,如果是则手动给根布局一个861的高度。过滤掉1692那一帧。

    根布局代码

    MainActivity代码

    看看效果:

    一次粗糙的解决过程就结束了。当然还有很多细节需要调整,比如随键盘高度调整:

    PS:微信调整输入法高度时,会出现布局闪动情况。。。

    相关文章

      网友评论

          本文标题:记一次解决键盘布局冲突闪动的过程

          本文链接:https://www.haomeiwen.com/subject/jaoezxtx.html