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

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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 输入法 遮挡