View被键盘挡住时实现动态滚动View
来源:互联网 发布:淘宝物流重量 虚假交易 编辑:程序博客网 时间:2024/06/14 11:28
实例化监听:
OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,这是一个注册监听视图树的观察者(observer),在视图树的全局事件改变时得到通知。ViewTreeObserver不能直接实例化,而是通过getViewTreeObserver()获得。
注册监听:
root.getViewTreeObserver().addOnGlobalLayoutListener(loginViewMoveListener);
记得在Activity销毁时,取消观察者:
if (rootView != null){ rootView.getViewTreeObserver().removeGlobalOnLayoutListener(loginViewMoveListener); }
//监听软键盘弹出之后移动按钮 OnGlobalLayoutListener loginViewMoveListener = new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO Auto-generated method stub final Rect rect = new Rect(); // 获取root在窗体的可视区域 rootView.getWindowVisibleDisplayFrame(rect); // 获取root在窗体的不可视区域高度(被其他View遮挡的区域高度)控件高度-控件可见区域最底端高度 int rootInvisibleHeight = rootView.getRootView() .getHeight() - rect.bottom; // 若不可视区域高度大于100,则键盘显示 if (rootInvisibleHeight > 100) { int[] location = new int[2]; // 获取scrollToView在窗体的坐标 // scrollToView.getLocationInWindow(location); quickItemLayout.getLocationOnScreen(location); // 计算root滚动高度,使scrollToView在可见区域 int srollHeight = (location[1] + quickItemLayout .getHeight()) - rect.bottom; if (recordMoveNum > 0 && srollHeight <= recordMoveNum) { rootView.scrollTo(0, recordMoveNum); } else { recordMoveNum = srollHeight + Util.Dip2Px(getApplicationContext(), 10); rootView.scrollTo(0, recordMoveNum); } } else { // 键盘隐藏 rootView.scrollTo(0, 0); } } };
知识补充:
两种方式都是,移动的是ViewContent
scrollTo()和scrollBy()都是View的public成员函数,使用这两个函数可以达到同样的目的,只是使用方式不同。
public void scrollBy (int x, int y),将View的Content偏移(x,y)。x控制左右方向的偏移,y控制上下方向的偏移。例如当x>0,y=0时,向右移动x像素,当x<0,y=0时,向左移动x像素,而View的大小和位置不发生改变。如果Content超出了View的范围,则超出的部分会被挡住。
public void scrollTo (int x, int y),将View的Content的位置移动到(x,y),而View的大小和位置不发生改变。如果Content超出了View的范围,则超出的部分会被挡住。
0 0
- View被键盘挡住时实现动态滚动View
- Android不让弹出键盘挡住View
- android不让弹出键盘挡住View
- Android不让弹出键盘挡住View
- Android不让弹出键盘挡住View
- Android不让弹出键盘挡住View
- Android不让弹出键盘挡住View
- 导航挡住view了怎么办
- Android更改状态栏背景色之后,view被状态栏挡住
- 自定义View之游戏摇杆键盘实现
- Android 自定义View,实现滚动选择器PickerView
- 自定义View实现水平滚动控件
- android 自定义实现滚动View:WheelView
- 高度自适应循环缩放滚动view实现
- 自定义View实现水平滚动控件
- 简单实现自定义横向滚动选择View
- iOS TextField 弹出键盘时实现view整体上移下移:防止弹出键盘遮挡输入框
- 输入框被键盘遮挡时 让整个view上移
- linux ip限制的两种设置方式
- SWIFT基础语法(二)
- 用Direct2D和DWM来做简单的动画效果2
- SDWebImage下载
- input输入框的change事件
- View被键盘挡住时实现动态滚动View
- JavaScript实现冒泡排序、快速排序、插入排序
- 数据结构5-队列
- 制作自己的缓存池
- 图像锐化——高斯—拉普拉斯算子
- android 6.0权限管理特性
- eclipse配置Java自定义环境变量
- SDAU 课程练习2 1011
- 跟我快速理解Dubbo:-2 架构设计详解