之前有说过因为项目需求需要做一个类似于qq空间和微信朋友圈评论的功能最后我的实现方法是使用fragment来实现并监听键盘的弹出来设置bottomMargin来实现(之所以选择这样来实现是因为有些问题我没有找到解决的办法),当然这种实现方法本来就是一个坑,因为有些机型键盘弹出后会把评论框顶上去然后再加上bottomMargin评论框就没了。之前也想过设置键盘弹出模式来解决这些问题但是由于某个页面的复杂情况到这些设置无效(只有SOFT_INPUT_MASK_ADJUST设置有效,其他无效,具体原因我还没有找到)于是就这样设置成SOFT_INPUT_MASK_ADJUST上线了
埋下的坑总会被你再踩到的,知识没有想到会这么快,上线没几天就出现了各种问题主要有以下三个问题:
- java.lang.IllegalStateException异常导致crach
- 4.4系统出现某些页面评论框不能被键盘顶上去
- 英文情况下由于hint比较长键盘挡住了部分评论框
对于上述三个问题,问题1主要是因为在show评论框的时候没有加上是否已添加的判断重复添加fragment造成crach,这个相对比较好解决;但是问题2,3是有点重复的也让我比较头疼。后来查了好多资料发现造成问题2的主要原因是因为使用了沉浸式的Theme,Google给的答案是在布局文件的跟布局添加fitSystemWindows属性并设置问true。测试后发现然并卵!!!然后再某个瞬间突然发现我的评论框是添加在了contentView中并不是布局文件中所以在页面的跟布局添加属性并没有用,应该在我评论框中的布局添加这个属性,然后马上测试,ok了设置的windowSoftInputMode属性也生效了
后续:在寻找解决办法的过程中发现qq的空间里面评论框竟然是一个Activity!!!!!!!