千万里不及你

在为客户开发Android应用程序时,我们遇到了同样的问题,我设法绕过了这一限制。我查看了WebView类的Android源代码,发现了updateZoomButtonsEnabled()-method与ZoomButtonsController-object一起使用,以根据浏览器的当前比例来启用和禁用缩放控件。我搜索了一种返回ZoomButtonsController-instance的getZoomButtonsController()方法,并找到了-method,该方法返回了这个实例。尽管已声明该方法public,但WebView-documentation中未记录该方法,并且Eclipse也找不到它。因此,我WebView对此进行了一些思考,并创建了自己的-subclass来覆盖onTouchEvent()-method,该方法触发了控件。public class NoZoomControllWebView extends WebView {    private ZoomButtonsController zoom_controll = null;    public NoZoomControllWebView(Context context) {        super(context);        disableControls();    }    public NoZoomControllWebView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        disableControls();    }    public NoZoomControllWebView(Context context, AttributeSet attrs) {        super(context, attrs);        disableControls();    }    /**     * Disable the controls     */    private void disableControls(){        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {            // Use the API 11+ calls to disable the controls            this.getSettings().setBuiltInZoomControls(true);            this.getSettings().setDisplayZoomControls(false);        } else {            // Use the reflection magic to make it work on earlier APIs            getControlls();        }    }    /**     * This is where the magic happens :D     */    private void getControlls() {        try {            Class webview = Class.forName("android.webkit.WebView");            Method method = webview.getMethod("getZoomButtonsController");            zoom_controll = (ZoomButtonsController) method.invoke(this, null);        } catch (Exception e) {            e.printStackTrace();        }    }    @Override    public boolean onTouchEvent(MotionEvent ev) {        super.onTouchEvent(ev);        if (zoom_controll != null){            // Hide the controlls AFTER they where made visible by the default implementation.            zoom_controll.setVisible(false);        }        return true;    }}您可能想要删除不必要的构造函数,并对可能的异常做出反应。尽管这看起来很笨拙且不可靠,但可以回溯到API级别4(Android 1.6)。正如@jayellos在评论中指出的那样,私有getZoomButtonsController()方法在Android 4.0.4及更高版本中不再存在。但是,它不需要。使用条件执行,我们可以检查我们是否在具有API Level 11+的设备上,并使用公开的功能(请参阅@Yuttadhammo答案)来隐藏控件。我更新了上面的示例代码来做到这一点。

android webview缩放功能,在Android WebView中启用/禁用缩放相关推荐

  1. android webview 禁止放大缩小,在Android WebView中启用/禁用缩放

    在为客户开发Android应用程序时,我们遇到了同样的问题,我设法绕过了这一限制. 我查看了WebView类的Android源代码,发现了updateZoomButtonsEnabled()-meth ...

  2. Android Studio多功能闹钟[android源码]

    Android Studio多功能闹钟[android源码] 多功能闹钟App 简 介 主 要 技 术 界面截图 主要代码 源码链接 作者信息 多功能闹钟App 简 介 此多功能闹钟界面采用TabHo ...

  3. android开发收藏功能实现,Android使用Realm数据库如何实现App中的收藏功能

    Android使用Realm数据库如何实现App中的收藏功能 发布时间:2021-05-07 11:20:34 来源:亿速云 阅读:63 作者:小新 这篇文章主要介绍了Android使用Realm数据 ...

  4. android短信功能裁剪,Android短信发送功能实现技巧分享

    如现在启动一模拟器id 号为5554,运行cmd telnet localhost 5554 输入help 可以看到很多用于模拟器中的功能命令 gsm call 134343434   // 便是呼叫 ...

  5. android清理缓存功能吗,Android清理缓存功能实现

    我们都知道在Android的设置->应用程序中可以查看应用程序的相关信息,其中有一个功能是清除缓存.如图: 怎么实现这些功能呢,从Android的setting源码中可以得到相关信息. 实现如下 ...

  6. android实现下载功能实现,Android开发之DownloadManager的使用

    Android 开发中,经常有从服务器下载数据的需求出现,尤其是在线更新App的情形.其基本思路是根据本地的App版本号和服务器的版本号进行比较,如果服务器版本较新,再进行提示然后下载Apk最后进行安 ...

  7. android 收藏歌曲功能,基于android的网络音乐播放器-回调实现音乐播放及音乐收藏的实现(三)...

    作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...

  8. android客服功能介绍,Android 客服工作台 SDK

    Android 客服工作台 SDK 开发工具 目录 build.gradle 配置 添加依赖,在app的build.gradle 中dependencies中加入如下(添加后需同步gradle): a ...

  9. 如何调用android录屏功能吗,Android录屏功能的实现

    最近做一个Android开发的项目用到了录屏的功能,开始查阅了一些资料和博客,基本上都是在讨论ROOT的.直到后来在github上看到一个比较新的代码,才恍然发现,Android 5.0时候开放了一个 ...

最新文章

  1. P1541 乌龟棋 题解(洛谷,动态规划递推)
  2. 【ACM】杭电OJ 2037
  3. 更快的 Maven 来了!!!性能提升 300%
  4. Some inputs do not have OOB scores. This probably means too few trees were used to compute any relia
  5. Spring(AbstractRoutingDataSource)实现动态数据源切换--转载
  6. 基于DM642的X264开源代码实现的研究
  7. mysql2014授权设置_mysql权限管理(2014-09-15)
  8. BetterZip使用教程分享:Mac用户如何提取压缩文件?
  9. oracle dba入门线路图--记某培训公司的ORACLE DBA技能进阶实战大纲
  10. linux修改数据库密码出现的问题吗,关于linux下mysql修改root密码时遇到的问题
  11. c语言 倒计时不清屏_C语言实现清屏操作
  12. 淘宝店铺950自定义模块实现1920全屏代码
  13. KindEditor实现上传图片与回显
  14. Vue.js菜鸟教程自学(一)
  15. Python转义字符及用法
  16. rap开发与rcp开发_使用RAP将RCP应用程序转换为Web应用程序
  17. meso-四(邻烷氧基苯基)卟啉合钴(meso-T(2-ROP)PCo);meso-四-(N-苄基)吡碇基卟啉锌(ZnTBPyP);离子型锰卟啉化合物[MnTTMAPP][PF6]5齐岳供应
  18. 钉钉机器人推送和抓取钉钉群消息
  19. python如何从文本中提取数据_如何从文本文件中提取数据?
  20. RTOS系统 音频player对比分析

热门文章

  1. 顺序表的动态存储细节
  2. 解决windows下使用pycharm的anaconda安装numpy或tensorflow不成功的问题
  3. 爬虫—使用Requests
  4. 使用 Gogs 搭建自己的 Git 服务器
  5. php环境搭建及入门
  6. java 中public 类
  7. MongoDB文档查询操作(三)
  8. 大规模数据存储集群数据存放的设计,分布式shardid的生成 - 如何指定范围随机数, 分组随机数...
  9. .Net报文请求转义
  10. mongdo通用类(C#版)