android Edittext 弹出输入法加 语音布局 不遮挡 用户输入内容
2016-08-10 14:47
549 查看
1,edittext 获取焦点输入法弹出后 如果当前scrollview 长度不够长,当收起输入后,srollview 会自动滚动到底部(这是一个坑,其实他应该还原之前的滚动位置)2. 当srollview 滚动到底部时 在点击edittext获取焦点 弹出键盘加语音输入布局 这个时候输入内容就会被 语音布局遮挡,同事经研究发现只要scrollview 不滚动底部 操作就正常显示并不会遮挡。3.这个时候变成需要解决不让scrollview 滚动到底部。(1. 点击editext 添加 scrollToBackview(); 防止滚动到底部点击edittext ,2.在键盘收起时调用scrollToBackview()(防止scrollview长度不够长,srollview 会自动滚动到底部))4.
mDiseaseDesc.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent e) { isClickDesc=true; if(isShowInput){ ((TelSeeRayCommitActivity)getActivity()).mVideoLayout.setVisibility(View.VISIBLE); }else{ scrollToBackview();//解决滑动到底部点击输入框 输入法退出导致遮挡用户输入 } return false; } }); }
/** 当scrollview滑动到底部时* */public void scrollToBackview(){mObservableScrollView.post(new Runnable() {@Overridepublic void run() {//To change body of implemented methods use File | Settings | File Templates.// mRootScrollView.fullScroll(ScrollView.FOCUS_DOWN);// int[] location = new int[2];// mLine.getLocationInWindow(location);// ToastUtil.longShow("===" + scrollY);// mObservableScrollView.scrollVerticallyTo(0);mObservableScrollView.scrollVerticallyTo(scrollY-50);}});}/**输入法隐藏线束监听*/@Overridepublic void onKeyBoardStateChange(boolean isVisible) {isShowInput=isVisible;if(isVisible){if (isClickDesc) {scrollToview();((TelSeeRayCommitActivity)getActivity()).mVideoLayout.setVisibility(View.VISIBLE);}if (isClickProble){mObservableScrollView.post(new Runnable() {public void run() {mObservableScrollView.fullScroll(ScrollView.FOCUS_DOWN);mProblemDesc.requestFocus();//多个edittext 防止抢焦点}});((TelSeeRayCommitActivity)getActivity()).mVideoLayout.setVisibility(View.VISIBLE);}}else{scrollToBackview();if (isClickProble){isClickProble=false;}if (isClickDesc){isClickDesc=false;}if (getActivity()!=null){((TelSeeRayCommitActivity)getActivity()).mVideoLayout.setVisibility( View.GONE);}}if (getActivity()!=null){((TelSeeRayCommitActivity)getActivity()).buttom.setVisibility(isVisible ? View.GONE : View.VISIBLE);}}/**scrollview 滚动监听*/@Overridepublic void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {if(getActivity() != null &&this.getActivity() instanceof ObservableScrollViewCallbacks){((ObservableScrollViewCallbacks) getActivity()).onScrollChanged(scrollY, firstScroll, dragging);}this.scrollY=scrollY;}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories