您的位置:首页 > 移动开发 > 微信开发

Andorid开发中仿微信聊天界面中遇到的问题

2016-06-15 15:05 507 查看

界面

1.在要弹出软键盘的界面中,一般是一个listView或者recyclerview作为一个显示消息的列表底部,底部是一个布局,布局中有一个语音文字切换的按钮(IamgeView),输入框(EditText)和一个发送按钮(Button)



逻辑

1.在进入这个activity中时,默认是不打开小键盘的,也就是edittext不会获取光标,只有当edittext获取焦点时,才会弹出软键盘,在弹出软键盘的情况下,点击界面的其他地方,edittext失去焦点,软键盘一起隐藏,再次点击edittext时获取

问题

1.进入聊天界面时,不自动弹出软键盘,一般edittext是可以获取焦点的,并且可以通过触摸获取焦点。这里有一个概念,什么是焦点?焦点是:focusable,focusableintouchmode为true的空间通过点击获取的焦点,或者通过设置通过代码requestFocus()获取到。button,imageview,textview这些控件,默认都是不可以获取焦点的,只有设置前两个属性之后才能够获取焦点

2.软键盘弹出后,把activity给顶上去。这个问题要设置activity的属性。

android:windowSoftInputMode=”stateHidden|adjustResize”

3.软键盘的弹出和隐藏:

弹出:edittext获取焦点之后软键盘会自动的弹出

隐藏:点击listview的时候会隐藏软键盘,通过以下代码,

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(chatEt.getWindowToken(),0);可以监听触摸事件的方法。

4.listview中的设置:

1.软键盘弹出后会将listview中的item向上顶,而不是listview布局顶上去,设置该属性会将listview顶上去,android:transcriptMode=”normal”(因为在recyclerview中未找到该属性也没有找到其他实现该效果的属性,所以没有使用recyclerview

2.listview,设置显示最后一个item: lv.setSelection(adapter.getCount()-1);

到此结束 !!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: