• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发日常-listVIiew嵌套webView回显阅读位置,-listviiewwebview

Android开发日常-listVIiew嵌套webView回显阅读位置,-listviiewwebview

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android开发日常-listVIiew嵌套webView回显阅读位置,-listviiewwebview等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发日常-listVIiew嵌套webView回显阅读位置,-listviiewwebview


       详情页布局结构

需求是回显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.

但是为什么是负的我还是不清楚,望知道的网友告知。

 

 

---问题搞定,结贴!

 

 

 

 

 

 

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发日常-listVIiew嵌套webView回显阅读位置,-listviiewwebview

相关文章

  • 2017-05-26Android安全专项之Xposed劫持用户名密码实践
  • 2017-05-26Android和JavaScript相互调用的方法,androidjavascript
  • 2017-05-26Android 实现闪屏页和右上角的倒计时跳转,android跳转
  • 2017-05-26谷歌电子市场3--应用,谷歌电子市场3--
  • 2017-05-26《Android Studio实用指南》12.18 文本搜索工具
  • 2017-05-26关于jni编译32位、64位动态库(Android.mk和Application.mk文件),jniapplication.mk
  • 2017-05-222.5.1 ListView Item多布局的实现
  • 2017-05-26提升Android ListView性能的几个技巧
  • 2017-11-18Android检查网络连接状态
  • 2017-08-31Android中TextView、EditText对部分内容设置不同格式(颜色、字体、超链接、图片。。)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android学习笔记(30):选项卡TabHost浅析
    • Android安全攻防战,反编译与混淆技术完全解析(下)
    • Android 系统版本&amp;API对照表,android系统版本
    • Android自定义控件
    • Android之ViewPager 第一课,androidviewpager
    • Google Play发布App中遇到&quot;多个APK:版本1未提供给任何设备配置使用。&quot;问题的解决方法,appapk
    • 8.3.2 绘图类实战示例
    • Android Support 包知识,androidsupport
    • Android Studio发布应用
    • 使用ContentProvider访问非数据库数据

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有