android Edittext 弹出输入法加 语音布局 不遮挡 用户输入内容

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() {
@Override
public 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);
}
});
}
/**
 输入法隐藏线束监听
*/
@Override
public 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 滚动监听
*/
@Override
public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {
if(getActivity() != null &&this.getActivity() instanceof ObservableScrollViewCallbacks){
((ObservableScrollViewCallbacks) getActivity()).onScrollChanged(scrollY, firstScroll, dragging);
}
this.scrollY=scrollY;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值