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

界面

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);

到此结束 !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值