Android开发日常-listVIiew嵌套webView回显阅读位置
详情页布局结构

需求是回显webview展示网页的阅读位置
方案1:
使用webview.getScrollY()获取滑动到的位置,用setScrollY()回显设置,
但是两个方法都出现了问题,getScrollY()时获取得到的值始终是0,由于使用的是腾讯
的x5内核,参考x5论坛的方法使用getWebScrollY(),但获取到的值一样是0,没有找到解决方法。
使用ScrollTo()的时候,webView在整个listView中的位置向上移动了,而且不能再滑上去了。
这个方案只能放弃。
方案2:
使用listView.ScrollTo(x,y)精确定位回显
本来以为这个方法可行,结果listView.getScrollY()获取到的值依然是0,无法记录滑动到的位置。
ScrollTo()方法倒是可用,但也遇到了新的问题--手指触发滑动事件时会时listView又跑到最顶部去了!
。感觉这个方案应该是可行的,就看后续怎么解决了。
---未完待续
2017/04/20
经过两天的不懈努力,就在我快要放弃跟产品说这个功能实现不了的时候,找到了最终的解决方案。
两步实现:
1.保存listview滚动的位置,在自定义view中实现
private int m_nItemCount;
private int[] m_nItemOffY; public int getListItemsHeight() {
ListAdapter adapter = getAdapter();
m_nItemCount = adapter.getCount();
int height = 0;
int i; m_nItemOffY = new int[m_nItemCount]; for (i = 0; i < m_nItemCount; ++i) {
View view = adapter.getView(i, null, this); view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); m_nItemOffY[i] = height;
height += view.getMeasuredHeight();
} return height;
} public int getListScrollY() {
int pos, nScrollY, nItemY;
View view; pos = getFirstVisiblePosition();
view = getChildAt(0);
nItemY = view.getTop();
nScrollY = m_nItemOffY[pos] - nItemY; return nScrollY;
}
2.再次进入时滚动到上次保存的位置,主要是使用setSelectionFromTop()这个方法,依然是在自定义view中添加,在activity中调用
public void scrollBy(int px){
setSelectionFromTop(getFirstVisiblePosition() , getChildAt(0).getTop() - px);
}
关键是第二个参数,虽然保存的是滑动到的距离的pixel值,但是经测试,这里的第二个值应该是保存的值的负数
看下源码中对第二个参数的解释:
@param y The distance from the top edge of the ListView (plus padding) that the
* item will be positioned.
但是为什么是负的我还是不清楚,望知道的网友告知。
---问题搞定,结贴!
Android开发日常-listVIiew嵌套webView回显阅读位置的更多相关文章
- Android开发:ScrollView嵌套GridView的解决办法
Android开发:ScrollView嵌套GridView的解决办法 前些日子在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便 ...
- Android 开发日常积累
Android 集合 Android 开源项目分类汇总 扔物线的 HenCoder 高级 Android 教程 hencoder HenCoder:给高级 Android 工程师的进阶手册 Andro ...
- Android开发-API指南-任务和回退栈
Task and Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集 ...
- Android开发之常用框架WebView详解代码。超详细,送给初学者,完全掌握此控件
这是我特意为新手小白写的一个代码,教大家完完全全掌握WebView, 我感觉,你看懂这个,基本上可以满足以后工作中的需要了,(只针对Webview的使用),但是其实它还有好多功能,比如真正的设计到和H ...
- Android开发日常-listview滚动方法梳理
listview滚动方法梳理 1.setSelection(position); 滚动到指定条目 2.setSelectionFromTop(position,y): 距离指定条目向下偏移y(像素) ...
- android开发学习 ------- git - 将代码回滚到任意版本
不小心将一个东西错误提交到git - 远程仓库上 参考 https://www.cnblogs.com/wancy86/p/5848024.html 你的git可能关联了多个远程仓库,每个关联的代码 ...
- Android开发之定义app在手机的安装位置
定义app在手机的安装位置,可以通过在清单文件中添加属性 android:installLocation="" 该属性有三个值:auto(自动),preferExternal(外部 ...
- JFrome 登陆/注册/回显无数据库连接小程序
当离开RCP插件区重新回顾一下JFrame窗口程序的标签.页面间的跳转. 完成一个登陆.注册界面.(界面完成后练习输入输出流,将前台的注册信息保存到一个文件夹下的.txt文件中) 首先向通过JFram ...
- Androidproject师进阶之路 :《Android开发进阶:从小工到专家》上市啦!
封面 文件夹1 文件夹2 - 当当购买链接 - 京东购买链接 为什么写这本书 写这本书的念头由来已久了. 或许是从我打算写<Android源代码设计模式解析与实战>那时起就萌生了这个念头, ...
随机推荐
- [JS]如何理解JS中的类和对象
-------------------------------------------------------------------------------------------- 变量:自由的 ...
- idea2017授权
http://blog.csdn.net/qq_27686779/article/details/78870816 文章中注册码: BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUc ...
- 6.面向对象 -类.md
目录 1. static: 2. 类在内存中,每一个类在创建在栈内存中,当创建一个对象的时候,将非类变量再堆内存中创建,而类变量是不会因为创建对象而在堆中重新创建 3. 对象.引用和指针: 4. 类名 ...
- proxool连接sqlerver
原先proxool连接sqlserver,用的是sqljdbc,不知道怎么回事,怎么也连接不上.下面的代码既不报错也不执行下去,应该是驱动出了问题,网上也很难找到sqljdbc什么版本. if (_c ...
- idea git 从github上拉取项目 更改上传
更改上传: 新增文件上传时注意:
- 通过GCEASY 和 jfr 发现运行时问题
进入 /dev/shm 目录 ,gc-xxx-xx 的gc 文件 ,上次 gceasy 进行分析 另外 ,通过打开 飞行记录器 , 打开jmc 通过jmx 端口连接上去 ,并启用飞行记录器 ...
- vue 父向子组件传递数据,子组件向父组件传递数据方式
父组件向子组件传递数据通过props,子组件引入到父组件中,设置一个值等于父组件的数据,通过:bind将数据传到子组件中,子组件中通过props接收父组件的数据,这样就可以使用父组件的数据了,循环组件 ...
- vl_sift函数用法
I = vl_impattern('roofs1') ; image(I) ; %vl_sift函数的输入是一个单精度的灰度图像,灰度值区间归一化到[, ]. %因此图像 I 需要通过下面的函数转成相 ...
- Netty 能做什么
作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事.如果你要进阶,想了解J ...
- day26 面向对象的常用方法 和 元类的使用
1. 面向对象中的常用方法 ***** isinstance() # 判断某个对象是不是某个类的实例 # 判断stu对象是不是Student类的实例 是不是子类 issubclass() class ...