上图:
图中出现的两个问题:
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:微信调整输入法高度时,会出现布局闪动情况。。。
网友评论