题目比较长,也可能有很多人不明所以这东西有啥可写的,简单来说就是实现近似于Android Pad 上QQHD聊天的界面效果,搞了很长的事件,今天终于搞定。
android3.0新加了组件Fragment称之为碎片,对这个一无所知的请自觉补习。今天的阐述将基于此组件。
fragment可以放入activity中,并随activity的生命周期变化而变化,但当相应键盘事件的时候,就比较让人挠头了,本来只希望弹出的软键盘可以将上层的Fragment进行挤压,而不影响到activity的样式,当时碉堡了,fragment与activity用得同一个Window(用于管理UI,这块我也不太熟悉,还请有研究的高手来指点一二)来响应键盘事件,也就是说你可以将activity的键盘显示事件设为adjustPan(个人理解为键盘覆盖)时,fragment也会响应此事件,当输入框位置在键盘弹出位置之上的时候,一切还是那么的河蟹,但是当输入框的位置在弹出的键盘区域之内时,整个界面还是会被整体上移,使fragment的一部分移出屏幕之外;之后尝试给fragment加键盘的响应事件adjustResize,fragment终于可以不被挤出了,以为完了么,OH NO,activity又被挤压了。噩梦啊
忽然灵光一闪,遗忘角落的DIALOG向我发出了光辉啊,有戏啊,既然键盘是一个Dialog形式(至于为什么这么说欢迎脑补,或者学习一下新的控件KeyBoardView)的控件,为什么不以彼之道还施彼身呢?
1.实例化一个Dialog类,在实例化的时候发现有两个构造函数,一个传参数Context,一个传参数Context,int(R.style.**),先试试第一个吧,只传个Context,果然偷懒不是好事,键盘依旧直挺挺的将dialog挤出了屏幕,第一次尝试失败
2.那么试一下第二个构造函数,先做准备工作